我在 VS 10 中使用 Crystal Report,
我添加了数据集。
现在,如果 DataSet 中只有一个表,则显示数据,而如果我添加带链接的两个表,则不会显示数据。
我正在从这个 DataSet(XSD) 表中获取字段。
如何克服这个问题。
提前致谢。希伦
我在 VS 10 中使用 Crystal Report,
我添加了数据集。
现在,如果 DataSet 中只有一个表,则显示数据,而如果我添加带链接的两个表,则不会显示数据。
我正在从这个 DataSet(XSD) 表中获取字段。
如何克服这个问题。
提前致谢。希伦
您需要绑定您打算使用的 DataTable,而不是绑定整个 DataSet。这个 SO 答案显示了一个很好的例子: https ://stackoverflow.com/a/8341474/283895
(从那篇文章复制的代码)
ReportDocument rpt = new ReportDocument();
rpt.load();
rpt.Database.Tables[0].SetDataSource(ds.Tables[0]);
this.crystalReportViewer1.ReportSource = rpt;
我习惯做的是;
C#
public partial class Default2 : System.Web.UI.Page
{
SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["MyCtr1"].ConnectionString);
SqlConnection cn1 = new SqlConnection(ConfigurationManager.ConnectionStrings["MyCtr2"].ConnectionString);
ReportDocument rdoc = new ReportDocument();
DataTable ds = new DataTable();
DataTable ds1 = new DataTable();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
loadreport();
}
private void loadreport()
{
{
cn.Open();
SqlDataAdapter da = new SqlDataAdapter("select * from [MyTable1] where (Number LIKE '" + DropDownList1.Text + "') ", cn);
da.Fill(ds);
cn.Close();
{
{
cn1.Open();
SqlDataAdapter da1 = new SqlDataAdapter("select * from [MyTable2] where (No LIKE '" + DropDownList1.Text + "') ", cn1);
//DataTable ds1 = new DataTable();
da1.Fill(ds1);
cn1.Close();
}
rdoc.Database.Tables[0].SetDataSource(ds);
rdoc.Database.Tables[1].SetDataSource(ds1);
InvoiceReport.ReportSource = rdoc;
InvoiceReport.DataBind();
}