0

我在 UpdatePanel 中有 GridView,并且 UpdatePanel 的 UpdateMode 设置为有条件的。

Gridview 包含 asp:CheckBox 作为 TemplateField,其余列是动态创建的绑定字段。Checkbox AutoPostBack 设置为 true,我根据复选框值更新数据表(在会话内)。

这是标记:

<asp:GridView ID="ObjList" runat="server"  CssClass="ObjList" AutoGenerateColumns="false" OnRowDataBound="ObjList_RowDataBound" AutoGenerateSelectButton="false" AllowPaging="False">
    <Columns>
        <asp:TemplateField HeaderText="&nbsp">
            <HeaderTemplate>
                <asp:CheckBox AutoPostBack="true" ID="chkAll" runat="server" OnCheckedChanged="HeaderChk_Changed" />
                <asp:HiddenField ID="LinkNumIndexHead" runat="server" Value="-1" />
            </HeaderTemplate>
        <ItemTemplate>
            <asp:CheckBox AutoPostBack="true" ID="chkRow" runat="server" Checked='<%# DataBinder.Eval(Container.DataItem, "Selection")%>'
                    OnCheckedChanged="ChkRow_OnCheckChange" />                                                 
        </ItemTemplate>                                                
        </asp:TemplateField>
    </Columns>
 </asp:GridView>

仅在已部署版本中: 每当用户快速单击 2 个或更多复选框时。回发第一个复选框触发,其余复选框未选中。我该如何控制这种行为?

当本地 IIS 运行时: 每个复选框的回发都会触发。

在 Firebug 调试中,注意到第一个复选框的回发需要相当长的时间。请告诉我如何避免这种情况。

4

1 回答 1

0

尝试这个

<asp:GridView ID="ObjList" runat="server" CssClass="ObjList" AutoGenerateColumns="false"
    OnRowDataBound="ObjList_RowDataBound" AutoGenerateSelectButton="false" AllowPaging="False">
    <Columns>
        <asp:TemplateField HeaderText="&nbsp">
            <HeaderTemplate>
                <asp:UpdatePanel runat="server">
                    <ContentTemplate>
                        <asp:CheckBox AutoPostBack="true" ID="chkAll" runat="server" OnCheckedChanged="HeaderChk_Changed" />
                    </ContentTemplate>
                </asp:UpdatePanel>
                <asp:HiddenField ID="LinkNumIndexHead" runat="server" Value="-1" />
            </HeaderTemplate>
            <ItemTemplate>
                <asp:UpdatePanel ID="UpdatePanel5" runat="server">
                    <ContentTemplate>
                        <asp:CheckBox AutoPostBack="true" ID="chkRow" runat="server" Checked='<%# DataBinder.Eval(Container.DataItem, "Selection")%>'
                            OnCheckedChanged="ChkRow_OnCheckChange" />
                    </ContentTemplate>
                </asp:UpdatePanel>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>
于 2013-08-26T13:26:42.647 回答