2013-04-05 74 views
0

結合中繼contron後處理Repeater控件中的CheckBoxList,我的複選框看起來像下面,使用asp.net

我這裏有兩個疑惑..

1 - 如果我選擇第1組的複選框,應選擇組1下的所有項目。我怎樣才能做到這一點 ?

2 - 我有「全選」按鈕,點擊時應選擇所有組的所有項目。由於複選框位於中繼器控制器內部,因此我不確定如何處理它。請幫助

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> 
+0

不知道,但:對的onclick ASP對象是指服務器端...嘗試的OnClientClick ... – MaxOvrdrv 2013-04-05 01:47:48

回答

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從後面的頁面。現在我發現所有的檢查屬於一個組框,讓他們檢查真實的。)

function selectGroupAll(chk) {   


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

     } 

2)所有的按鈕,選擇按此

寫入功能的JavaScript和來回調用它m按鈕單擊事件

function selectAll() { 

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

按鈕形式調用函數

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