0

Gridview 内に配置された ListView 内のチェックボックスをオンにしたい。Gridview には多くの行があり、各行にはレコードが関連付けられた List ビューがあります。各行には、select all という CheckBox が含まれています。その特定の行に付随する子 ListView コントロールのチェックボックスをオンにしたい。

私はこれを行うことができるサーバー側のコードを持っています。しかし、時間がかかりすぎます..つまり、1000を超えるレコードがある場合、レコードを選択するのに約1〜2分かかります。これをJavascriptで実現したい。どうすればこれを達成できますか。

画像

これは、GridView と ListView を表すイメージです。GridView は Groups で、Contacts は ListView です。GridView で [SelectAll] ボタンを選択すると、適切な連絡先を選択する必要があります。

Javascriptを使用してこれを達成するにはどうすればよいですか。

これはグリッドビューのコードです

 <asp:GridView ID="GridViewGroups" runat="server" AutoGenerateColumns="False"                                      
                                onrowdatabound="GridViewGroups_RowDataBound" Width="100%" 
                                BorderColor="Silver" BorderStyle="Solid" BorderWidth="1px" 
                                onselectedindexchanged="GridViewGroups_SelectedIndexChanged" 
                                meta:resourcekey="GridViewGroupsResource1" >
                            <Columns>
                                <asp:TemplateField HeaderText="Groups" 
                                    meta:resourcekey="TemplateFieldResource1" HeaderStyle-CssClass="tSubHead">
                                    <ItemTemplate>
                                        <div align="left" >
                                     <asp:Panel ID="PanelContainer" runat="server" Width="100%" 
                                                meta:resourcekey="PanelContainerResource1" >

                                    <asp:Panel ID="PanelHeaderList" runat="server"   
                                             meta:resourcekey="PanelHeaderListResource1" CssClass="tSubHead2" style="cursor:pointer;">
                                    <asp:ImageButton ID="Image1" runat="server" ImageUrl="../micons/IC_Plus.png" CssClass="tImage" 
                                            AlternateText="Expand or Collapse" meta:resourcekey="Image1Resource1"/>
                                    <asp:Label ID="LabelGrpName_sm" runat="server" 
                                            Text='<%# string.Format("{0} ({1})", Eval("Grp_Name"),Eval("CountNo")) %>' 
                                            meta:resourcekey="LabelGrpName_smResource1" />
                                     </asp:Panel>
                                    <div style="float:left;width:200px;" >  
                                    <asp:HiddenField ID="hfGrpID" runat="server" Value='<%# Eval("Grp_ID") %>' />     
                                        <asp:CheckBox ID="CheckBoxSelect" runat="server"  AutoPostBack="True" class='<%#Eval("Grp_ID") %>'
                                            OnCheckedChanged="GroupCheckChanged" 
                                            meta:resourcekey="CheckBoxSelectResource1"  />            
                                  <b>  <asp:Label ID="Grp_NameLabel" runat="server" 
                                            Text="Select All" 
                                            meta:resourcekey="Grp_NameLabelResource1" />
                                            </b>

                                    </div>

                                  <br />
                                    <p>
                                    <asp:Panel ID="PanelGroupsItem" runat="server" Width="100%" 
                                            meta:resourcekey="PanelGroupsItemResource1" >
                                    <asp:Panel ID="MyGroups" runat="server" ScrollBars="Vertical" Height="300px" 
                                            Width="100%" Visible='<%# GetFlag(Convert.ToInt32(Eval("Grp_ID"))) %>' 
                                            meta:resourcekey="MyGroupsResource1">

                                        <asp:ListView ID="ListViewContactsInGrp" runat="server"  onitemdatabound="ListView1_ItemDataBound" >
                                        <LayoutTemplate>
                                            <table id="Table1" runat="server" style="width:100%;">
                                                <tr id="Tr1" runat="server">
                                                    <td id="Td1" runat="server">
                                                        <table ID="itemPlaceholderContainer" runat="server" border="0" style="width:100%;">
                                                            <tr id="Tr2" runat="server" style="">
                                                                <th id="Th1" runat="server" colspan="2" class="tSubHead2">
                                                                    Contacts</th>                                
                                                            </tr>
                                                            <tr ID="itemPlaceholder" runat="server">
                                                            </tr>
                                                        </table>
                                                    </td>
                                                </tr>
                                                <tr id="Tr3" runat="server">
                                                    <td id="Td2" runat="server" style="">
                                                    </td>
                                                </tr>
                                            </table>
                                        </LayoutTemplate>
                                        <ItemTemplate>
                                         <tr style="">
                                                <td class="tListViewAlignment" style="width:10px">
                                                    <asp:CheckBox ID="chkFlag" runat="server" meta:resourcekey="chkFlagResource1" class='<%#Eval("grp_id") %>' />
                                                </td>                
                                                <td class="tListViewAlignment"><asp:Label ID="LabelContacts" runat="server" Text='<%# Eval("cont_name") %>' 
                                                        meta:resourcekey="LabelContactsResource1"></asp:Label>
                                                <asp:HiddenField ID="hfGSM" runat="server" Value='<%# Eval("cont_gsm") %>' />
                                                </td>
                                            </tr>
                                        </ItemTemplate>

                                        </asp:ListView>


                                       </asp:Panel>
                                    </asp:Panel>
                                      </p>
                                    <asp:CollapsiblePanelExtender ID="CollapsiblePanelExtender1" runat="server"
                                                Collapsed="True"
                                                TargetControlID="PanelGroupsItem"
                                                CollapseControlID="PanelHeaderList"
                                                ExpandControlID="PanelHeaderList"
                                                ImageControlID="Image1"
                                                ExpandedImage="~/micons/IC_minus.png"
                                                CollapsedImage="~/micons/IC_Plus.png"
                                                SuppressPostBack="True" Enabled="True">
                                    </asp:CollapsiblePanelExtender>
                                    </asp:Panel>
                                    </div>


                                    </ItemTemplate>
                                    <ItemStyle BorderColor="Silver" />
                                </asp:TemplateField>
                            </Columns>
                            <HeaderStyle BorderColor="Silver" />
                            <RowStyle BorderColor="Silver" />
                        </asp:GridView>
4

3 に答える 3

0

jQuery を使用すると、このようなことができます。

$("#gridviewID input[type='checkbox']").each(function () {
   $(this).prop('checked', true);
});

または、すべてのチェックボックスに同じクラスがある場合

$(".checkboxClass").prop('checked', true);
于 2012-10-01T13:08:38.743 に答える
0

連絡先リストの各チェックボックスに次のような名前を付けた場合:

<input type="checkbox" name="contacts" id="contact_id" />

すべてのチェックボックスを選択するメインのチェックボックスの場合:

<input type="checkbox" name="select_all" id="contact_id" onclick="checkAll(this.id)" />

次の JavaScript 関数を使用できます。

 function checkAll(chkid) 
    {
        var chk = document.getElementById(chkid);

        var allchk = document.getElementsByName("contacts");
        for (var i = 0; i < allchk.length; i++) {
            allchk[i].checked = chk.checked;
        }
    }

これを使用して、「すべて選択」チェックボックスを選択すると、「連絡先」という名前のすべてのチェックボックスが選択され、「すべて選択」が選択されていない場合は選択されたチェックボックスが削除されます。

于 2012-10-01T13:20:52.197 に答える
0

次のようなものが必要だと思います:

function SelectCheckboxes(toCheck){
    $("#GridViewGroups input."+toCheck+":checkbox").each(function () {
        this.attr("checked", "checked");
    });
}

そして、あなたはそれを次のように呼びます:

OnClick(SelectCheckboxes("class_to_check");)
于 2012-10-01T13:04:24.857 に答える