CompositeControl上的DataBind

时间:2014-04-23 19:26:14

标签: c# asp.net data-binding composite-controls

我有一个复合控件,里面有一个DropDownList。

我遇到的问题是下一个问题:当我在Page_Load上加载数据时(第一次加载页面)一切正常,但是当有回发时我想刷新数据源(我的意思是,如果使用不同的数据源,则数据源将保存到ViewState,但不会保存到下拉列表中。

我发现这种情况正在发生,因为页面生命周期从第一次渲染到第二次时发生了变化:

  • 第一次:Page_Load - CreateChildControls
  • 第二次:CreateChildControls - Page_Load - Function_Called_On_Postback

所以我的问题是我在 CreateChildControls()中执行数据绑定,但数据源是在 Function_Called_On_Postback()上设置的,因此,下拉列表没有&#39 ;得到改变。

你知道我该如何解决这个问题吗?你有至少一个建议吗?

非常感谢!

1 个答案:

答案 0 :(得分:0)

我假设回发是由页面上的某些事件引起的,例如我们的DDL上的选定索引或按钮上的点击事件。如果是这种情况,那么您应该能够在相关事件的事件处理程序方法中设置DDL的数据源。

为了使其正常工作,您必须在初始加载而不是回发时在Page_Load方法中加载DDL的数据。这可以通过Page.IsPostBack来检查。

if(!Page.IsPostBack) { /* initial load data binding of the DDL */ }