Страница 1 из 1

DataTable

Добавлено: 22 фев 2007, 11:14
s.melnik
Можно ли в редакторе отчётов в ручную перелить из поступающего в Report DataTable в созданный в ручную DataTAble, если да то где и как

DataTable

Добавлено: 22 фев 2007, 17:36
Vital
Вы можете обработать DataTable в событии BeginRenderEvent отчета. Достать DataTables и DataSets зарегестрированные через метод RegData можно через коллекцию this.Dictionary.DataStore. Полученный DataTable можно зарегестрировать при помощи метода RegData в отчете.

Спасибо.

DataTable

Добавлено: 23 фев 2007, 06:00
s.melnik
Уменя есть DataTable в который занесены объёмы брака за месяц по дням но в самой DataTable есть только дни когда был брак а в отчёте надо вывести все дни месяца как это можно сделать.

DataTable

Добавлено: 23 фев 2007, 13:57
Edward
Воспользуйтесь, пожалуйста, кодом, аналогичным следующему примеру. Здесь производится регистрация в отчете DataSet, а потом вручную добавляется таблица MyTable аналогичная Categories из dataSet Demo. Подход в Вашем случае аналогичный.

Код: Выделить всё

StiReport report = new StiReport();
DataSet ds = new DataSet("Demo");
ds.ReadXmlSchema("Demo.xsd");
ds.ReadXml("Demo.xml");
report.RegData(ds);
DataTable myDataTable = new DataTable();
DataTable tableFromDataStore = (DataTable)report.Dictionary.DataStore["Demo.Categories"].Data;
DataColumn newDataColumn;
foreach (DataColumn dataColumn in tableFromDataStore.Columns)
{
    newDataColumn = new DataColumn();
    newDataColumn.ColumnName = dataColumn.ColumnName;
    newDataColumn.DataType = dataColumn.DataType;
    newDataColumn.Caption = dataColumn.Caption;
    newDataColumn.AllowDBNull = dataColumn.AllowDBNull;
    myDataTable.Columns.Add(newDataColumn);
}
DataRow newDataRow;
foreach (DataRow dataRow in tableFromDataStore.Rows)
{
    newDataRow = myDataTable.NewRow();
    foreach (DataColumn dataColumn in tableFromDataStore.Columns)
    {
        newDataRow[tableFromDataStore.Columns[dataColumn.ColumnName].ColumnName] = dataRow[tableFromDataStore.Columns[dataColumn.ColumnName].ColumnName];
    }
    myDataTable.Rows.Add(newDataRow);
}
myDataTable.TableName = "MyTable";
report.RegData(myDataTable);
report.Design();
Спасибо.