Browse Source

Grouping, Test for DataItem.ColumnName is empty

pull/685/head
Peter Forstmeier 10 years ago
parent
commit
85810a072b
  1. 5
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/DesignableItems/Group_SortColumns.cs
  2. 3
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/DataManager/Listhandling/CollectionDataSource.cs
  3. 1
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportSettings.cs
  4. 21
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs
  5. 57
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/DataSource/DataSourceFixture.cs

5
src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/DesignableItems/Group_SortColumns.cs

@ -15,13 +15,10 @@ namespace ICSharpCode.Reporting.Addin.DesignableItems @@ -15,13 +15,10 @@ namespace ICSharpCode.Reporting.Addin.DesignableItems
/// Description of Group_SortColumns.
/// </summary>
public class SortColumn:ICSharpCode.Reporting.Items.SortColumn
{
{
}
public class GroupColumn:ICSharpCode.Reporting.Items.GroupColumn
{
}
}

3
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/DataManager/Listhandling/CollectionDataSource.cs

@ -190,6 +190,9 @@ namespace ICSharpCode.Reporting.DataManager.Listhandling @@ -190,6 +190,9 @@ namespace ICSharpCode.Reporting.DataManager.Listhandling
string ReadValueFromProperty (string columnName) {
if (String.IsNullOrEmpty(columnName)) {
return "Missing ColumnName";
}
var propertyPath = Current.ParsePropertyPath(columnName);
try {
var val = propertyPath.Evaluate(Current);

1
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportSettings.cs

@ -43,7 +43,6 @@ namespace ICSharpCode.Reporting.Items @@ -43,7 +43,6 @@ namespace ICSharpCode.Reporting.Items
var paperProp = new System.Drawing.Printing.PageSettings();
var p = paperProp.PaperSize.PaperName.ToString();
Console.WriteLine("Set paperSize to {0}",p);
}

21
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs

@ -80,6 +80,7 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -80,6 +80,7 @@ namespace ICSharpCode.Reporting.PageBuilder
foreach (IGrouping<object, object> grouping in DataSource.GroupedList) {
var groupHeader = (BaseRowItem)CurrentSection.Items.Where(p => p.GetType() == typeof(GroupHeader)).FirstOrDefault();
var sectionContainer = CreateContainerForSection(CurrentPage, pagePosition);
DataSource.Fill(groupHeader.Items,grouping.FirstOrDefault());
@ -105,7 +106,8 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -105,7 +106,8 @@ namespace ICSharpCode.Reporting.PageBuilder
//Childs
foreach (var child in grouping) {
var dataItems = CurrentSection.Items.Where(p => p.GetType() == typeof(BaseDataItem)).ToList();
// var dataItems = CurrentSection.Items.Where(p => p.GetType() == typeof(BaseDataItem)).ToList();
var dataItems = ExtractDataItems(CurrentSection.Items);
List<IExportColumn> convertedItems = FillAndConvert(sectionContainer, child, dataItems, converter);
AdjustLocationInSection(sectionPosition, convertedItems);
@ -130,6 +132,23 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -130,6 +132,23 @@ namespace ICSharpCode.Reporting.PageBuilder
}
List<IPrintableObject> ExtractDataItems (List<IPrintableObject> list) {
List<IPrintableObject> items = null;
foreach (var element in list) {
var gh = element as GroupHeader;
if (gh == null) {
var container = element as ReportContainer;
if (container == null) {
items = list.Where(p => p.GetType() == typeof(BaseDataItem)).ToList();
} else {
items = container.Items.Where(p => p.GetType() == typeof(BaseDataItem)).ToList();
}
}
}
return items;
}
void EvaluateExpressionsInGroups(ExportContainer sectionContainer, IGrouping<object, object> grouping){
ExpressionRunner.Visitor.SetCurrentDataSource(grouping);
ExpressionRunner.Visitor.Visit(sectionContainer);

57
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/DataSource/DataSourceFixture.cs

@ -130,7 +130,7 @@ namespace ICSharpCode.Reporting.Test.DataSource @@ -130,7 +130,7 @@ namespace ICSharpCode.Reporting.Test.DataSource
int i = 0;
foreach (var element in collectionSource.SortedList) {
collectionSource.Fill(ric,element);
Console.WriteLine("first : <{0}> Last <{1}> ",((BaseDataItem)ric[0]).DBValue,((BaseDataItem)ric[1]).DBValue);
// Console.WriteLine("first : <{0}> Last <{1}> ",((BaseDataItem)ric[0]).DBValue,((BaseDataItem)ric[1]).DBValue);
Assert.That(((BaseDataItem)ric[0]).DBValue,Is.GreaterThanOrEqualTo(compare));
@ -158,8 +158,7 @@ namespace ICSharpCode.Reporting.Test.DataSource @@ -158,8 +158,7 @@ namespace ICSharpCode.Reporting.Test.DataSource
var dataItemsCollection = CreateDataItems();
var reportsettings = new ReportSettings();
reportsettings.GroupColumnsCollection.Add( new GroupColumn("GroupItem",1,ListSortDirection.Ascending));
//repiortsettings.GroupColumnsCollection.Add( new GroupColumn("RandomInt",1,ListSortDirection.Ascending));
var collectionSource = new CollectionDataSource (list,reportsettings);
collectionSource.Bind();
int i = 0;
@ -168,10 +167,10 @@ namespace ICSharpCode.Reporting.Test.DataSource @@ -168,10 +167,10 @@ namespace ICSharpCode.Reporting.Test.DataSource
Console.WriteLine("Key {0} ",element.Key);
foreach (var l in element) {
collectionSource.Fill(dataItemsCollection,l);
Console.WriteLine("first : <{0}> Last <{1}> Group <{2}> Randomint <{3}>",((BaseDataItem)dataItemsCollection[0]).DBValue,
((BaseDataItem)dataItemsCollection[1]).DBValue,
((BaseDataItem)dataItemsCollection[2]).DBValue,
((BaseDataItem)dataItemsCollection[3]).DBValue);
// Console.WriteLine("first : <{0}> Last <{1}> Group <{2}> Randomint <{3}>",((BaseDataItem)dataItemsCollection[0]).DBValue,
// ((BaseDataItem)dataItemsCollection[1]).DBValue,
// ((BaseDataItem)dataItemsCollection[2]).DBValue,
// ((BaseDataItem)dataItemsCollection[3]).DBValue);
i++;
}
}
@ -188,7 +187,30 @@ namespace ICSharpCode.Reporting.Test.DataSource @@ -188,7 +187,30 @@ namespace ICSharpCode.Reporting.Test.DataSource
Assert.That(i,Is.EqualTo(collectionSource.Count));
}
[Test]
public void DataItemWithNoColumnNameHasErrorMessageInDbValue() {
var baseRow = new BaseRowItem();
var dataItem = new BaseDataItem() {
};
baseRow.Items.Add(dataItem);
var row = new System.Collections.Generic.List<IPrintableObject>();
row.Add(baseRow);
var reportSettings = new ReportSettings();
var collectionSource = new CollectionDataSource (list,reportSettings);
collectionSource.Bind();
foreach (var element in collectionSource.SortedList) {
collectionSource.Fill(row,element);
var r = (BaseRowItem)row[0];
foreach (var result in r.Items) {
Assert.That(((BaseDataItem)result).DBValue.StartsWith("Missing"),Is.EqualTo(true));
}
}
}
[Test]
public void FillDataIncludedInRow() {
@ -210,16 +232,6 @@ namespace ICSharpCode.Reporting.Test.DataSource @@ -210,16 +232,6 @@ namespace ICSharpCode.Reporting.Test.DataSource
}
i ++;
}
/*
do {
collectionSource.Fill(row);
var r = (BaseRowItem)row[0];
foreach (var element in r.Items) {
Assert.That(((BaseDataItem)element).DBValue,Is.Not.Empty);
}
i ++;
}while (collectionSource.MoveNext());
*/
Assert.That(i,Is.EqualTo(collectionSource.Count));
}
@ -255,15 +267,6 @@ namespace ICSharpCode.Reporting.Test.DataSource @@ -255,15 +267,6 @@ namespace ICSharpCode.Reporting.Test.DataSource
Assert.That(res.DBValue,Is.Not.Empty);
i ++;
}
/*
do {
collectionSource.Fill(row);
var res = (BaseDataItem)row.Find(c => ((BaseDataItem)c).ColumnName == "GroupItem");
Assert.That(res.DBValue,Is.Not.Empty);
i ++;
}while (collectionSource.MoveNext());
*/
Assert.That(i,Is.EqualTo(collectionSource.Count));
}

Loading…
Cancel
Save