![]() |
1
8
我对此有点晚了,但为了将来的参考,下面是我如何完成类似的事情的⦠我的控件是一个使用节点模板的树。我处理的问题是如何捕获客户端对节点展开/折叠状态的更改。最终奏效的是: 在CreateChildControls中,将隐藏字段添加到我的根控件的控件集合中。
在OnInit呼叫中
在LoadPostData中,在post集合中查找与隐藏字段的UniqueID(而不是ClientID)匹配的值:
这使得通过getElementById查找隐藏字段相当容易:
然后JavaScript根据所发生事件的需要修改隐藏字段的值。当我们回到服务器时,我能够解析出这个字段的内容,并在再次呈现之前根据需要修改控件状态(注意:我实际上使用了3个隐藏字段来跟踪不同的事件,但概念是相同的) 希望这对以后的人有帮助 |
![]() |
2
3
只在选中一个项目时才工作听起来很奇怪。一种快速检查是否调用了LoadPostData的方法是启用跟踪并将以下内容放入IPostBackDataHandler.LoadPostData(…)。
如果是这样的话,你应该确保你有以下几点:
这是一个完整的样本控制。
页面看起来像这样。
|
![]() |
3
1
我已经确定,除非post数据包含与控件的UniqueID同名的项,否则不会调用LoadPostData()方法[编辑:在Init()期间调用Page.registerrequirepostback可以克服这个问题。]我可以理解原因,但这是非常有限的。 我克服了这个问题,在LoadPostData()方法中根本不处理它。相反,我在一个方法中处理它,而我在OnLoad()中调用它。 使用此方法时需要记住两件事: 2) 由于OnLoad()发生在ViewState处理代码之后,因此在创建ListItems之后需要手动设置SelectedValue。否则,如果列表框是通过AJAX填充的,并且用户进行了选择,那么选择将丢失。 我希望这对将来的人有帮助。 |
![]() |
Deverill · 如何在web应用程序中高效存储信息 11 年前 |
![]() |
SausageBuscuit · 按下后退按钮时触发ASP.NET按钮事件 11 年前 |
![]() |
markzzz · 如何在处理WebForm之前调用母版页的父级? 11 年前 |