微软报表RDLC动态绑定数据:RDLC对应的DataSet1.xsd,C#代码取得的DataSet,这两张皮贴不到一起!
Report1.rdlc里面调用数据集合DataSet1.xsd,这个数据集合选择好了[BIANHAO][MINGCHENG][FUZEREN],和以前定死的没区别。
C#代码取得的DataSet,有10000多行啊,可是表里面是空白的。
我查了断点,每一句都执行了。
Report1.rdlc设置了《始终复制》
reportViewer1.LocalReport.的属性方法都看了,没什么还需要调用的了。。。
代码:
using Microsoft.Reporting.WinForms;
//取数据
searchstring = "select * from ShenBao";
conn.Fill(searchstring, "ShenBao");
int i = conn.ds.Tables["ShenBao"].Rows.Count;//断点可看到这个i=10000多,取来的数据没问题
//绑定数据,这四行都执行了
ReportDataSource rds = new ReportDataSource("DataSet1", conn.ds.Tables["ShenBao"]);
reportViewer1.LocalReport.ReportPath = "Report1.rdlc";
reportViewer1.LocalReport.DataSources.Add(rds);
reportViewer1.LocalReport.Refresh();
取数据子函数代码,Open();里面封转了数据库连接,经常用,而且刚才断点可看到行数了,应该没问题。
/// <summary>
/// 建立DataSet对象,用记录填充或构架(如果必要)DataSet对象,DataSet即是数据在内存的缓存
/// </summary>
/// <param name="str_Sql">打开表Sql语句</param>
/// <param name="TableName">重载,可以接收表名</param>
public string Fill(string str_Sql, string TableName)
{
Open();
myAdapter = new System.Data.OleDb.OleDbDataAdapter(str_Sql, myConnection);
myAdapter.TableMappings.Add("Table", TableName);
//这个地方需要设置前面的sourcetable和datasettable吗?????????
水晶报表里,这里我这样设置没错啊!!!!!!!
ds = new DataSet();
try
{
myAdapter.Fill(ds, TableName);
}
catch (SqlException e)
{
string errorMessage = e.Message;
return errorMessage;
}
finally
{
myConnection.Dispose();
}
return "OK";
}
------解决方案--------------------
报表数据源名称不对?
ReportDataSource rds = new ReportDataSource("ShenBao", conn.ds.Tables["ShenBao"]);
名字错了?