覆盖DataBind()

时间:2012-10-10 14:28:25

标签: c# asp.net

我有一个页面。

在C#中:

public class myClass
{
    protected void Page_Load(object sender, EventArgs e)
    {
        mydropdown1.DataSource = location_of_data;
        mydropdown1.DataBind();

        mydropdown2.DataSource = location_of_data;
        mydropdown2.DataBind();
    }
}

假设aspx文件有2个下拉列表。

我想覆盖DataBind函数,保持当前字符串不变,但我想更改我想要绑定的每个项目的值。

我用谷歌搜索了DataBind覆盖的解决方案,如下所示:

public override void DataBind()
{
   //...some implementation here...
   base.DataBind()
}

但我不确定是否应该在myClass中使用thie override方法。此外,如果我有两个DropDowns并且我想以不同方式对待他们的DataBinds,我应该如何处理它?<​​/ p>

1 个答案:

答案 0 :(得分:1)

您应该监听单个DataBinding事件的下拉列表,而不是在控件DataBind方法中处理它。然后你也可以单独处理它们。

protected override void OnLoad(EventArgs e) {
    mydropdown1.DataBinding += binddropdown1;
    mydropdown1.DataBind();
}

private void binddropdown1(object sender, EventArgs e) {
    mydropdown1.DataSource = dataSource;
}

然后,当关注任一下拉列表的数据发生变化时,请调用dropdown.DataBind()方法并在那里处理。