0

UpdatePanel 内に GridView があり、UpdatePanel の UpdateMode は条件付きに設定されています。

Gridview には asp:CheckBox が TemplateField として含まれており、残りの列は動的に作成されるバインドされたフィールドです。Checbox 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>

Deployed バージョンのみ: ユーザーが 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 に答える