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
/// Description of Group_SortColumns. /// Description of Group_SortColumns.
/// </summary> /// </summary>
public class SortColumn:ICSharpCode.Reporting.Items.SortColumn public class SortColumn:ICSharpCode.Reporting.Items.SortColumn
{
{
} }
public class GroupColumn:ICSharpCode.Reporting.Items.GroupColumn 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
string ReadValueFromProperty (string columnName) { string ReadValueFromProperty (string columnName) {
if (String.IsNullOrEmpty(columnName)) {
return "Missing ColumnName";
}
var propertyPath = Current.ParsePropertyPath(columnName); var propertyPath = Current.ParsePropertyPath(columnName);
try { try {
var val = propertyPath.Evaluate(Current); var val = propertyPath.Evaluate(Current);

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

@ -43,7 +43,6 @@ namespace ICSharpCode.Reporting.Items
var paperProp = new System.Drawing.Printing.PageSettings(); var paperProp = new System.Drawing.Printing.PageSettings();
var p = paperProp.PaperSize.PaperName.ToString(); 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
foreach (IGrouping<object, object> grouping in DataSource.GroupedList) { foreach (IGrouping<object, object> grouping in DataSource.GroupedList) {
var groupHeader = (BaseRowItem)CurrentSection.Items.Where(p => p.GetType() == typeof(GroupHeader)).FirstOrDefault(); var groupHeader = (BaseRowItem)CurrentSection.Items.Where(p => p.GetType() == typeof(GroupHeader)).FirstOrDefault();
var sectionContainer = CreateContainerForSection(CurrentPage, pagePosition); var sectionContainer = CreateContainerForSection(CurrentPage, pagePosition);
DataSource.Fill(groupHeader.Items,grouping.FirstOrDefault()); DataSource.Fill(groupHeader.Items,grouping.FirstOrDefault());
@ -105,7 +106,8 @@ namespace ICSharpCode.Reporting.PageBuilder
//Childs //Childs
foreach (var child in grouping) { 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); List<IExportColumn> convertedItems = FillAndConvert(sectionContainer, child, dataItems, converter);
AdjustLocationInSection(sectionPosition, convertedItems); AdjustLocationInSection(sectionPosition, convertedItems);
@ -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){ void EvaluateExpressionsInGroups(ExportContainer sectionContainer, IGrouping<object, object> grouping){
ExpressionRunner.Visitor.SetCurrentDataSource(grouping); ExpressionRunner.Visitor.SetCurrentDataSource(grouping);
ExpressionRunner.Visitor.Visit(sectionContainer); 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
int i = 0; int i = 0;
foreach (var element in collectionSource.SortedList) { foreach (var element in collectionSource.SortedList) {
collectionSource.Fill(ric,element); 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)); Assert.That(((BaseDataItem)ric[0]).DBValue,Is.GreaterThanOrEqualTo(compare));
@ -158,8 +158,7 @@ namespace ICSharpCode.Reporting.Test.DataSource
var dataItemsCollection = CreateDataItems(); var dataItemsCollection = CreateDataItems();
var reportsettings = new ReportSettings(); var reportsettings = new ReportSettings();
reportsettings.GroupColumnsCollection.Add( new GroupColumn("GroupItem",1,ListSortDirection.Ascending)); reportsettings.GroupColumnsCollection.Add( new GroupColumn("GroupItem",1,ListSortDirection.Ascending));
//repiortsettings.GroupColumnsCollection.Add( new GroupColumn("RandomInt",1,ListSortDirection.Ascending));
var collectionSource = new CollectionDataSource (list,reportsettings); var collectionSource = new CollectionDataSource (list,reportsettings);
collectionSource.Bind(); collectionSource.Bind();
int i = 0; int i = 0;
@ -168,10 +167,10 @@ namespace ICSharpCode.Reporting.Test.DataSource
Console.WriteLine("Key {0} ",element.Key); Console.WriteLine("Key {0} ",element.Key);
foreach (var l in element) { foreach (var l in element) {
collectionSource.Fill(dataItemsCollection,l); collectionSource.Fill(dataItemsCollection,l);
Console.WriteLine("first : <{0}> Last <{1}> Group <{2}> Randomint <{3}>",((BaseDataItem)dataItemsCollection[0]).DBValue, // Console.WriteLine("first : <{0}> Last <{1}> Group <{2}> Randomint <{3}>",((BaseDataItem)dataItemsCollection[0]).DBValue,
((BaseDataItem)dataItemsCollection[1]).DBValue, // ((BaseDataItem)dataItemsCollection[1]).DBValue,
((BaseDataItem)dataItemsCollection[2]).DBValue, // ((BaseDataItem)dataItemsCollection[2]).DBValue,
((BaseDataItem)dataItemsCollection[3]).DBValue); // ((BaseDataItem)dataItemsCollection[3]).DBValue);
i++; i++;
} }
} }
@ -188,7 +187,30 @@ namespace ICSharpCode.Reporting.Test.DataSource
Assert.That(i,Is.EqualTo(collectionSource.Count)); 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] [Test]
public void FillDataIncludedInRow() { public void FillDataIncludedInRow() {
@ -210,16 +232,6 @@ namespace ICSharpCode.Reporting.Test.DataSource
} }
i ++; 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)); Assert.That(i,Is.EqualTo(collectionSource.Count));
} }
@ -255,15 +267,6 @@ namespace ICSharpCode.Reporting.Test.DataSource
Assert.That(res.DBValue,Is.Not.Empty); Assert.That(res.DBValue,Is.Not.Empty);
i ++; 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)); Assert.That(i,Is.EqualTo(collectionSource.Count));
} }

Loading…
Cancel
Save