我有一个复合控件,里面有一个 DropDownList。
我遇到的问题是下一个:当我在 Page_Load 上加载数据时(第一次加载页面时)一切正常,但是当有回发时我想刷新数据源(我的意思是,与不同的),数据源被保存到 ViewState,但没有数据绑定(bind)到下拉列表。
我发现这是因为页面生命周期从第一次渲染到第二次渲染发生了变化:
- 第一次:Page_Load - CreateChildControls
- 第二次:CreateChildControls - Page_Load - Function_Called_On_Postback
所以我的问题是我在 CreateChildControls() 中进行了数据绑定(bind),但数据源是在 Function_Called_On_Postback() 上设置的,因此,下拉列表没有获取更改。
你知道我该如何解决这个问题吗?您至少有什么建议吗?
非常感谢!
最佳答案
我假设回发是由页面上的某些事件引起的,例如在我们的 DDL 上更改的选定索引或来自按钮的点击事件。如果是这种情况,那么您应该能够在相关事件的事件处理程序方法中设置 DDL 的数据源。
为了使其正常工作,您必须在初始加载时而非回发时在 Page_Load 方法中加载 DDL 数据。这可以使用 Page.IsPostBack 检查。
if(!Page.IsPostBack) { /* initial load data binding of the DDL */ }
关于c# - CompositeControls 上的数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23253466/