使用asp.net处理Repeater控件中的checkboxlist

时间:2013-04-05 01:45:32

标签: javascript asp.net .net repeater

绑定转发器控件后,我的复选框如下所示

我有两个疑问:

  1. 如果选中组1的复选框,则应选择组1下的所有项目。我怎样才能做到这一点 ?

  2. 我有“全选”按钮,点击后应选择所有组中的所有项目。由于复选框位于转发器控件内,我不知道如何处理它。

  3.   Group 1
           Item 1
           Item 2
    
        Group 2
           Item 3
           Item 4
    
        Group 3
           Item 5 
           Item 6
    
    
    
    
      ASPX : 
    
        <ol>
            <asp:Repeater ID="rp_Groups" runat="server" OnItemDataBound="rp_Groups_ItemDataBound">
                <ItemTemplate>
                    <ul>
                        <asp:CheckBox RepeatColumns="2" runat="server" ID="chk_Group" Text='<%# Eval("category_type") %>' Value='<%# Eval("service_type_category_id") %>' onclick="OnGroupClick" />
    
                         <asp:CheckBoxList runat="server" ID="chkServiceType" style="padding-left:20px" DataValueField="ServiceTypeID" DataTextField="Name" EnableViewState="true"
                         ></asp:CheckBoxList>
    
                      <br />
                    </ul>
                </ItemTemplate>
            </asp:Repeater>
        </ol>
    
    <script type="text/javascript">
        function OnGroupClick(group) { 
      for(item in group.getElementsByTagName('input')) {
         item.checked = group.checked;
      }
    }
    
       function selectAll() {
            $("#<%=chkServiceType.ClientID %> input[type=checkbox]").each(function () {
                this.checked = true;
            })
        }
    </script>
    

1 个答案:

答案 0 :(得分:1)

您需要在转发器Itemdatabound事件中添加复选框onclick事件,如下所示调用JavaScript函数。

protected void rp_Groups_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
         try
        {
            System.Web.UI.WebControls.CheckBox chk =  (System.Web.UI.WebControls.CheckBox)e.Item.FindControl("chk_Group");

            chk.Attributes.Add("onclick", "selectGroupAll("+chk.ClientID+");");
        }
         catch (Exception ex)
         {

         }

    }

然后你需要用JavaScript编写函数

1)选择组复选框的功能(我从后面的页面传递复选框组的客户端ID。现在我找到属于一个组的所有复选框,并将它们设置为true。)

function selectGroupAll(chk) {         


            $(chk).parent().parent().find(":checkbox").attr("checked", true);

        }

2)选择按钮上的ALL单击

在JavaScript中编写函数并从按钮单击事件中调用它

function selectAll() {

            $(':checkbox').each(function () {
                this.checked = true;
            });
        }

调用函数的按钮形式

 <input type="button" value="Test" onclick="selectAll();" />