fastreport.net.注册数据时的错误



根据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"

最新更新