سلام
این به خاطر اینکه احتمالا هر Table رو به صورت داگانه به گزارش ارسال میکنید برای رفع این مشکل میتونی به روش زیر عمل کنی
protected void Page_Load(object sender, EventArgs e)
{
List<string> items = new List<string>();
DataTable dt1 = new DataTable();
DataTable dt2 = newDataTable();
DataSet ds=new DataSet();
dt1 = GetTable();
dt2 = GetTable();
//اطلاعات رو توسط تابع استخراج کن و تو فیلد بریز مثل زیر
items = GetInfo();
foreach (var item in items)
{
dt1.Rows.Add("value1", "value1", "value1");
dt2.Rows.Add("value1", "value1", "value1");
}
ds.Tables.Add(dt1);
ds.Tables.Add(dt2
stiReport1.Dictionary.DataStore.Clear();
report.DataSources.Clone();
report.RegData(ds);
report.Dictionary.Synchronize();
report.CalculationMode = StiCalculationMode.Interpretation;
StiOptions.Engine.FullTrust = false;
string maph = Server.MapPath("~/Reports");
maph = maph + "/Report.mrt";
report.Load(maph);
StiWebViewer1.Report = report;
}
private DataTable GetTable2()
{
DataTable returnTable = new DataTable();
returnTable.Columns.Add("field1");
returnTable.Columns.Add("field2");
returnTable.Columns.Add("field3");
returnTable.TableName = "table2";
return returnTable;
}
private DataTable GetTable()
{
DataTable returnTable = new DataTable();
returnTable.Columns.Add("field1");
returnTable.Columns.Add("field2");
returnTable.Columns.Add("field3");
returnTable.TableName = "table1";
return returnTable;
}
}
}
حواست باشه اسم dataset باید هم اسم datasource تو design report و است tablename تو دو تابع هم اسم table توی design report باشه وگرنه خالی نشون میده گزارشت
در ضمن اسم فیلدها این دوتا table دقیفا بایس هم اسم با report design باش