ASP.net更新面板的事件问题

我对此完全感到困惑,非常感谢任何帮助.

我正在处理位于更新面板内的用户控件.表单上有一个按钮,可以加载一些数据.这是正常的.

还有一个用于过滤数据的下拉框.更改此功能确实会启动回发,但没有任何反应.下拉框返回默认值,永远不会调用OnSelectedIndexChanged函数.

我已经在page_prerender和page_preload中添加了断点,并且两者都被击中了帖子肯定会发生.带有dropdownGroup_changed函数的断点永远不会被命中.

删除更新面板可以解决问题,但是它会破坏页面的其余部分,因此除了测试之外我不能使用它.

我还验证了我的预渲染/页面加载中没有任何东西正在重置页面的状态.

这是更新面板代码:

<asp:UpdatePanel ID="UpdatePanel6" runat="server" ChildrenAsTriggers="true" UpdateMode="Conditional" >    
<ContentTemplate>   
    <ucControlName:ControlName ID="ControlName1" runat="server" />   
</ContentTemplate>
</asp:UpdatePanel>

这是下拉列表 – 它位于用户控件的内部

<asp:DropDownList ID="dropdownGroup" runat="server" Visible="false" AutoPostBack="true" OnSelectedIndexChanged="dropdownGroup_changed"></asp:DropDownList>

它当然可以通过代码中出现问题的点来查看和数据绑定

更多信息 –
添加了硬编码下拉列表(以排除愚蠢的数据绑定问题)和文本框到同一控件.我有同样的问题.

事件似乎没有触发,因为就.net而言,值永远不会改变.我在page_init和page_load期间检查了控件 – 值始终相同.

按钮工作,但其他控件没有让我认为这里有一个视图状态问题,但我不能完全找出导致它的原因.为页面和面板启用了Viewstate-不知道是否还有其他任何内容可能覆盖/损坏它.

我是否提到我讨厌激情更新面板?因为我讨厌激情更新面板.

最佳答案 我建议在’DropDownList’控件中检查每个’ListItem’的’Value’属性.如果它们都是相同的,即使’Text’属性不同,那么’OnSelectedIndexChanged’根本不会触发,因为ASP.NET无法判断是否有任何更改(有关更多信息,请参阅
this related question).

这是我问题的真正原因,即使我也在’UpdatePanel’中有’UserControl’和’DropDownList’并且’AutoPostBack’按预期触发.我认为UpdatePanel是罪魁祸首,但事实并非如此.我的DropDownList中的每个项目都具有相同的基础值“10”,即使它们具有不同的“文本”值.我将它们更改为每个都有一个唯一值,然后允许OnSelectedIndexChanged事件触发,从而修复问题.

点赞