1
0
添加客户端HTML属性。这里显示的selectedIndexChanged方法是服务器端方法。您要么需要向控件添加一个自动回发,要么向控件添加一个服务器端事件处理程序,使其调用服务器上的C函数,要么创建一个客户端javascript函数来处理客户端事件。 编辑--- 当页面发布回服务器时,控件将不再存在。该页是一个新的Istance,尚未将列表框添加到其控件集合中。当auto postback为true时,正在调用事件,但服务器的页面对象中不存在该控件,并且如果删除if page.ispostback块,则会重新创建该控件,因此该控件不是引发事件的控件,并且该控件仍然不存在。 这个控件的实际目标是什么?它只是提供一个主细节的东西吗? 编辑2—— 为您创建了有效的解决方案: Page:
Codebehind:
|
2
0
1-动态添加控件必须加载到页面初始化事件而不是页面加载中 2个选中的列表框不适用于.attributes.add(“selectedIndexChanged”,“…”),因为该复选框列表是一个ASP.NET控件,但它以HTML格式呈现为常规输入 |
3
0
事件没有发生的原因是您误解了ASP.NET页的生命周期。当您请求页面时,ASP.NET将创建相应页面类的新实例。此实例不知道以前创建的任何其他实例。它使用page类的实例生成一组HTML,并将其作为响应发送回浏览器。然后,服务器上的page类实例及其状态将被销毁。 当页面回发时,ASP.NET使用VIEWSTATE、IDS等读取并将回发的HTML元素映射到新创建的页面实例中的服务器控件。您添加到上一个实例的控件集合中的元素在此新实例中不存在,因此ASP.NET无法识别它们,或在它们上激发事件。 这是一篇文章,它演示了我认为您正在尝试实现的那种事情,尽管使用了GridView,但它使用了与我之前发布的解决方案类似的方法。 http://www.codeproject.com/KB/aspnet/MultiNestMDGridview.aspx 也许你可以准确地解释最终目标是什么,因为可能有更好的解决方案?我完全接受我之前发布的方法和该链接中的解决方案的局限性,即可用的详细程度有限,这可能是问题,也可能不是问题,具体取决于您实际尝试做什么。 编辑—— 如果按照@microgen的建议更改为page_init事件,请删除if(!page.ispostback),将autopostback设置为true,并为动态添加的控件使用非易失性ID,这将调用服务器端事件并呈现第二个列表框。它不能与guid.new()一起工作,因为新创建的页面上的控件集合不会包含任何具有匹配ID的内容,因此事件处理程序不会被挂接。这将回答最初发布的问题。但是,第二个列表框不会触发事件,除非您创建它并将其添加到page.controls中,page_in it中的控件的方式与第三个列表框中的控件相同,依此类推,所有这些都是基于上述原因。 |
4
0
伙计们,我的代码工作得很好。我今天刚在Diff Visual Studio中尝试过,一切都很好。@RichardW1001和@Microgen感谢您的关注和帖子。 |
Haim Ohayon · 这些链接之间有什么区别? 2 年前 |