2011-07-21 24 views
0

我正在開發一個網頁,用於更改Project.Say中所有模塊的子管理員的權限(添加/查看/刪除/編輯/全部),還有5個模塊。我已經在每個模塊的datagrid中加載了當前權限(在datagrid中有5行(模塊),對於該模塊,在複選框中有5列權限)。我需要功能,比如當我檢查'ALL'複選框時,對於那個(模塊),其他複選框添加,查看,編輯,刪除應該被選中,當我取消勾選'ALL'複選框時,其他複選框應該被取消選中。 任何解決方案接受的JavaScript或任何事件。 我試着用checkedchanged事件,但它檢查/取消選中整個數據網格的所有複選框,而不是爲那個模塊(行)。在checkedchanged事件中,我寫了這段代碼..檢查DataGrid行中的所有複選框在同一行中檢查複選框時

foreach (DataGridItem dgitem in dg_rights.Items) 
      { 
       CheckBox chkall = (CheckBox)dgitem.FindControl("chk_all"); 
       CheckBox chkadd = (CheckBox)dgitem.FindControl("chk_add"); 
       CheckBox chkedit = (CheckBox)dgitem.FindControl("chk_edit"); 
       CheckBox chkview = (CheckBox)dgitem.FindControl("chk_view"); 
       CheckBox chkdelete = (CheckBox)dgitem.FindControl("chk_delete"); 
       if (chkall.Checked) 
       { 
        chkadd.Checked = true; 
        chkedit.Checked = chkview.Checked = chkedit.Checked = chkdelete.Checked = true; 
       } 
       else 
       { 
        chkadd.Checked = false; 
        chkedit.Checked = chkview.Checked = chkedit.Checked = chkdelete.Checked = false; 
       } 
      } 

看起來像我缺少一些基本的東西或犯了一個錯誤。 任何想法。 感謝 阿尼什

+1

javascript也被接受... – LeO

回答

0

我調用的函數ABCD與「本」的說法上的「onClick」的chk_all複選框,我結束了這一點,其工作。這裏chk_是以chk_n開頭的所有複選框的ID,所有都將被檢查。

function abcd(checkbox) { 
      var cba = $("#" + checkbox.id); 
      if (cba.is(':checked')) { 
       //alert("check all") 
       var cb = $("#" + checkbox.id); 
       var td = cb.parent("td"); 
       var tr = td.parent("tr"); 
       tr.children().children("input:checkbox[id*=chk_]").attr('checked', cb.attr('checked')); 
      } 
      else { 
       //alert("unchecked"); 
       var cb = $("#" + checkbox.id); 
       var td = cb.parent("td"); 
       var tr = td.parent("tr"); 
       tr.children().children("input:checkbox[id*=chk_]").removeAttr('checked'); 
      } 
     } 

謝謝。

0

你可以這個jQuery:

$('#<%= YourGrid.ClientID %> input[id$=_chkAll]').click(
    function() { 
     var all_checked = $(this).attr('checked') == 'checked'; 
     $(this).parent().parent().find('input').each(
      function (i,o) { 
       o.checked = all_checked; 
      } 
     ) 
    } 
) 

http://jsfiddle.net/4u6gw/

對於ASP.NET服務器端解決方案,你必須這樣做:

  • 設置chkall檢查框自動​​回覆
  • 掛鉤到ItemsGrid_Command(對象發件人,DataGr idCommandEventArgs e)和使用e來獲得數據行和.FindControl得到其他複選框
+0

不能使用dg_rights替代YourGrid,而是使用_chkAll替換_chk_all/chk_all(複選框的ID)。可能是一些小問題。 chk_all位於datagrid的最後一列。 – LeO