2017-05-04 55 views
2

私は25以上のデータベーステーブルにデータを設定する必要があるこのgridviewを持っています。これらのテーブルはルックアップテーブルであり、このグリッドビューはルックアップテーブルのメンテナンス目的です。Gridviewから動的に作成されたチェックボックスの値を取得する| Asp.net

gridviewに特定の列を入れるのではなく、dataTableをgridviewに直接バインドします。

以下のメソッドは、アクティブな列の値( "y"/"n")を(gridviewの最後の列)チェックボックスに割り当てます。

<asp:GridView ID="gvTables" runat="server" CssClass="Grid" Width="100%" AutoGenerateColumns="true" Font-Names="Arial" 
            BorderWidth="1" PagerSettings-Mode="Numeric" Font-Size="8.7pt" Font-Bold="false" AlternatingRowStyle-BackColor="#f4f4f4" 
            HeaderStyle-BackColor="LightGray" AllowPaging="True" ShowFooter="false" PageSize="12" 
            OnPageIndexChanging="gvTables_PageIndexChanging" 
            OnRowDataBound="gvTables_RowDataBound" 
            OnRowCreated="gvTables_RowCreated" 
            OnSelectedIndexChanged="gvTables_SelectedIndexChanged"> 
            <PagerStyle CssClass="pgr" /> 
           </asp:GridView> 

コード:

private void SetCheckBoxesInGV() 
    { 
     ////add checkboxes in place of active 
     for (int i = 0; i < gvTables.Rows.Count; i++) 
     { 
      System.Web.UI.WebControls.CheckBox chk = new System.Web.UI.WebControls.CheckBox(); 
      chk.ID = "chk"; 
      chk.Checked = gvTables.Rows[i].Cells[gvTables.Rows[0].Cells.Count - 1].Text.Trim() == "y" ? true : false; 
      gvTables.Rows[i].Cells[gvTables.Rows[0].Cells.Count - 1].Controls.Add(chk); 
      gvTables.Rows[i].Cells[gvTables.Rows[0].Cells.Count - 1].ControlStyle.CssClass = "ItemCenter"; 
     } 
    } 

だから、最後の列ではなく、Y/Nで次のようになります。

enter image description here

は、今私は、チェックボックスの値を取得したい私はこれを使用して、それが動作すると思ったのですが、それはしません。 null値と "オブジェクト参照がオブジェクトのインスタンスに設定されていません"を返します。

((CheckBox)gvTables.Rows[i].Cells[gvTables.Rows[0].Cells.Count - 1].FindControl("chk")).Checked 

答えて

0

だから何私がやったことは、私は、チェックボックスのテンプレートフィールドを追加し、チェックボックス列が最後の列となるように列を配置し直すために、このlink'sヘルプを使用しました。

そして、チェックボックスの値を簡単に取得できました。

関連する問題