问题似乎微不足道,但我没有找到谷歌的答案。
如果我在网络表单中有多个独立控件,例如DropDownLists和grid,我需要在另一个事件处理程序中使用来自一个事件处理程序的回发信息,因此我需要在其他事件之后使其正常启动。
我看到了许多间接的方法 - 通过提升自定义事件等,但可能还有更好更简单的方法吗?
UPD。:如果我需要使用另一个控件中的回发信息 - 例如RadGrid.NeedDataSource数据绑定处理程序中的dropdownlist.SelectedValue - 发送它的常用方法是什么?
答案 0 :(得分:4)
不幸的是,您不应该构建依赖于触发顺序的事件处理程序。这不是推荐的做法。来自ASP.NET Web Server Control Event Model:
您不应该创建应用程序 依赖于变更事件的逻辑 按特定顺序抚养 除非你有详细的知识 页面事件处理。有关细节, 见ASP.NET Page Life Cycle Overview。
如果您依赖于此,您的设计可能存在缺陷。如果您发布更多详细信息,我们可以看看是否可以帮助您解决问题。
编辑::Rudnev,我之前使用过RadGrid,但我不记得NeedDataSource事件的确切目的。将下拉列表设置为在更改后自动回发,然后在事件处理程序中,将Grid的DataSource设置为适当的源并在其上调用DataBind()是不够的?
答案 1 :(得分:1)
据我所知,ASP.Net中的默认事件触发机制不保证任何订单。所以你应该设计你的程序流程,这样你就不依赖它了。如果你能提到你的确切要求,可以考虑一下。
答案 2 :(得分:0)
如果一个事件处理程序依赖于另一个事件处理程序的结果,则概念上它响应的“事件”是第一个事件的完成。我认为您可能会在适当时手动提升自定义事件或调用方法链。