服务器填充的DropDownLists上的回发无效

时间:2018-03-26 19:09:59

标签: c# asp.net postback

我已经看到了这个问题的多种变体,但所有的答案似乎都涉及到javascript。

我正在查询数据库,检索项目列表,并使用完全相同的内容填充3个不同的下拉列表。从列表中选择一个项目,然后单击“保存”按钮后,我收到无效的回发错误。

我确定这是因为我在我的DropDownList上使用AutoPostBack来触发更新并禁用其他列表中的新选择。当我将AutoPostBack设置为false时,错误消失。

我已经读过我需要注册我的列表内容以进行事件验证,但我看到的例子,如上所述,是用javascript手动输入或处理的;不是来自数据库查询生成的内容的服务器端。

我现在使用的解决方案是“链接按钮”而不是常规的asp:按钮,因为前者似乎不会导致回发。

我想知道是否有更正式的处理方法。出于安全原因,我不打算禁用事件验证。

<asp:UpdatePanel ID="DropDownListPanel" runat="server" 
ChildrenAsTriggers="true" ><ContentTemplate>

<asp:gridview GridLines="Both" runat="server" 
ShowHeader="false" ShowFooter="true" HorizontalAlign="Left" 
AutoGenerateColumns="false">
<Columns>       

   <asp:TemplateField ControlStyle-Height="100%" ItemStyle-Width="25%">
       <ItemTemplate>
            <asp:DropDownList ID="DropDownList1" runat="server" 
            AppendDataBoundItems="true" Width="100%" AutoPostBack="true" 
            OnSelectedIndexChanged="CheckItem">
            <asp:ListItem Value="-1">Select</asp:ListItem>
            </asp:DropDownList>
      </ItemTemplate>
 </Columns>
 </asp:gridview>

 </ContentTemplate>
 </asp:UpdatePanel>



<asp:Button ID="SaveButton" runat="server" Text="Save"
Enabled="True" OnClick="SaveTable"  />

0 个答案:

没有答案