根据fastreport.net文档,寄存器达塔方法方法已重载,我可以多种方式注册数据。我尝试注册数据集通过下一个代码:
adapter.SelectCommand.CommandText = "SELECT t.* FROM test t";
ds = new DataSet();
adapter.Fill(ds);
report1.Load("report1.frx");
report1.RegisterData(ds, "user_ds");
report1.GetDataSource("user_ds").Enabled = true; //Error: Object reference not set to an instance of an object.
((DataBand)report1.FindObject("Data1")).DataSource = report1.GetDataSource("user_ds");
report1.Show();
获取错误:
对象引用未设置为对象的实例。
但是,当寄存器数据表:
时,我将获得成功 adapter.SelectCommand.CommandText = "SELECT t.* FROM test t";
ds = new DataSet();
adapter.Fill(ds, "test");
report1.Load("report1.frx");
report1.RegisterData(ds.Tables["test"], "user_ds");
report1.GetDataSource("user_ds").Enabled = true;
((DataBand)report1.FindObject("Data1")).DataSource = report1.GetDataSource("user_ds");
report1.Show();
为什么我不能注册数据集?
您需要在GetDataSource
方法中使用 table 名称。
例如:
DataSet ds = new DataSet();
ds.Tables.Add("test");
report1.RegisterData(ds, "user_ds");
report1.GetDataSource("test").Enabled = true; // "test", not "user_ds"