尝试从类中绑定到BASE gridview

时间:2011-10-26 19:02:58

标签: inheritance devexpress aspxgridview data-binding

所以我创建了一个类,它可以获取一些数据并用它做一些事情,最后吐出一个数据表。

我正在使用devex gridview(虽然我假设asp网格视图可以使用相同的答案)将它添加到页面,实例化我的类(带有我想要的数据的id)...然后在我的页面代码中在page_load后面,将数据绑定到gridview,如下所示:

 DashBoard1 = new DashBoard("661", baseUser);

 FFASPxGridView1.DataSource = DashBoard1.dtFinalTable;
 FFASPxGridView1.DataBind();

这一切都很好......但是,我们已经将gridview变成了一个用户控件(向我们添加了一些东西),我的想法是我想围绕gridview环绕我的仪表板类。所以我让我的仪表板课成为了gridview的一个孩子。

public class DashBoard : FFASPxGridView

希望最终产品可以简单地将该控件放到页面上并在后面的代码中实例化[即DashBoard1 = new DashBoard(“661”,baseUser); ]和WHALAH - 完成的gridview将显示。

我想我可以通过绑定到我的仪表板类构造函数的最后几行中的数据表来完成此操作(在我知道我的最终数据表已经创建之后),如下所示:

base.DataSource = dtFinalTable;  //I also tried this.dtFinalTable & this.DataSource, etc.
base.DataBind();

当我单步执行此操作时,数据表很好,我没有错误,但我没有在我的gridview上显示最终产品的数据。

此外,回到PAGE - 我无法在page_load事件中将数据表绑定到自身:

DashBoard1.DataSource = DashBoard1.dtFinalTable;
DashBoard1.DataBind();

再一次,没什么 - 但就像我说的,如果我将它绑定到一个常规的gridview,那么我确实得到了数据......

有人能告诉我我没想到的是什么吗?我试图覆盖pre_render并在那里执行此操作,但这不起作用...我只是不知所措。

**这是一种奇怪的行为(至少对我的误解大脑):如果我在页面上放置了两个这样的控件并尝试将其中一个数据表绑定到另一个,我得到数据......? **

DashBoard2.DataSource = DashBoard1.dtFinalTable;
DashBoard2.DataBind();

1 个答案:

答案 0 :(得分:1)

我的建议很少:
您应该在Init事件处理程序中绑定网格。所以,如果从ASPxGridView继承,你应该有这样的东西:

public class DashBoard : FFASPxGridView {
    public Dashboard() {
        Init += InitEventHandler;
    }

    public void InitEventHandler() {
        Datasource = yourDatasource;
        DataBind();
    }

您可以在此处阅读有关使用Init / Event处理程序的更多信息: http://www.devexpress.com/Support/Center/kb/p/K18282.aspx

如果您创建用户控件,最好避免继承并包含包含控件。创建CompositeControl并将网格添加到该控件控件集合。更多相关信息:

http://msdn.microsoft.com/en-us/library/zt27tfhy.aspx