2012-02-09 12 views
0

私はこのコードを使用しましたが、動作していません...ヘッダチェックボックスをオンにして、行ID(チェックボックスがオンの場合)ヘッダチェックボックスをオンにした場合、他のすべてのチェックボックスはグリッド表示でチェックされます

protected void headerLevelCheckBox_CheckedChanged(object sender, EventArgs e) 
{ 
    CheckBox headerChkBox = ((CheckBox)gvApproach.HeaderRow.FindControl("headerLevelCheckBox")); 

    if (headerChkBox.Checked == true) 
    { 
     foreach(GridViewRow gvRow in gvApproach.Rows) 
     { 
      CheckBox rowChkBox = ((CheckBox)gvRow.FindControl("rowLevelCheckBox")); 

      rowChkBox.Checked = true;//((CheckBox)sender).Checked;  
     } 
    } 
    else 
    { 
     foreach (GridViewRow gvRow in gvApproach.Rows) 
     { 
      CheckBox rowChkBox = ((CheckBox)gvRow.FindControl("rowLevelCheckBox")); 
      rowChkBox.Checked = false; 
     } 
    }   
} 

私は私はあなたがサーバー上でそれをしないと、代わりにクライアント上でそれを実行することを示唆している

+0

トピックの... if条件は必要ありません。 – Reniuz

+0

私は答えを得た。 – ani

答えて

3

ASPXコードをお役に立てば幸いです。 ..と特定のIDを取得するには私はラブコントロールをPhotoId(PK)として使用しました

<asp:GridView ID="gvApproach" runat="server" CellPadding="4" AutoGenerateColumns="False" 
     GridLines="None"> 
<Columns> 
    <asp:TemplateField HeaderText="PhotoId" Visible="false"> 
    <ItemTemplate> 
    <asp:Label ID="lblPhotoId" runat="server" Text='<%#Eval("PhotoId") %>' Visible="false"></asp:Label> 
    </ItemTemplate> 
    </asp:TemplateField> 

<asp:TemplateField> 
     <HeaderTemplate> 
      <asp:CheckBox runat="server" ID="headerLevelCheckBox" AutoPostBack="true" oncheckedchanged="headerLevelCheckBox_CheckedChanged" />     
     </HeaderTemplate> 
     <ItemTemplate> 
      <asp:CheckBox runat="server" ID="rowLevelCheckBox" AutoPostBack="true"/> 
     </ItemTemplate> 
</asp:TemplateField>   
    </Columns> 
背後にあるコードで

....

protected void headerLevelCheckBox_CheckedChanged(object sender, EventArgs e) 
{ 
    CheckBox headerChkBox = ((CheckBox)gvApproach.HeaderRow.FindControl("headerLevelCheckBox")); 

    if (headerChkBox.Checked == true) 
    { 
     foreach(GridViewRow gvRow in gvApproach.Rows) 
     { 
      CheckBox rowChkBox = ((CheckBox)gvRow.FindControl("rowLevelCheckBox")); 

      rowChkBox.Checked = true;  
     } 
    } 
    else 
    { 
     foreach (GridViewRow gvRow in gvApproach.Rows) 
     { 
      CheckBox rowChkBox = ((CheckBox)gvRow.FindControl("rowLevelCheckBox")); 
      rowChkBox.Checked = false; 
     } 
    }   
} 
2

... JavaScriptを使用せずに#

C、VS 2008使用しています。 javascriptを使用してください。あなたはそのページにjQueryをプレゼントしていますか(そのライブラリでもっと簡単になります)?たぶん、このチュートリアルでは支援します。http://www.4guysfromrolla.com/articles/120810-1.aspx

0

をあなたは

headerChkBoxのonclick = "changeCheckboxes(本)"

function changeCheckboxex(mainCheck) 
{ 
    $(yourDivContainer).children("INPUT[type='checkbox']").attr('checked', yourValue); 
} 

のようなものを使用する必要があります。具体的には、それは

0

JavaScriptを使用してそれを実行したい場合は、

あなたは、レコードのIDを保持するチェックボックスのtooltip属性を使用する必要があります。例については :ヘッダのチェックボックスをクリックしたときに

<asp:CheckBox ID="rowLevelCheckBox" runat="server" ToolTip='<%#Eval("ID")%>' /> 

その後、あなたはjavascriptのコードを使用する必要があります。

最後に、Code Behind。

選択したIDを取得しますか?このコードは使用できますか。

public List<string> GetAllSelectedIds() 
{ 
    List<string> selectedIds= new List<string>(); 
    for (int i = 0; i < grid.Rows.Count; i++) 
    { 
     GridViewRow row = grid.Rows[i]; 
     if (((CheckBox)row.FindControl("rowLevelCheckBox")).Checked) 
     { 
      string rowLevelCheckBoxStr = ((CheckBox)row.FindControl("rowLevelCheckBox")).ToolTip; 
      selectedIds.Add(rowLevelCheckBoxStr); 
     } 
    } 
    return selectedIds; 
} 
関連する問題