2017-06-02 12 views
1

グリッドビューに行を選択するチェックボックスがあります。チェックボックスをオンにすると、行の値を文字列/セッションに取得する必要があります。コードは以下ですチェックボックスがオンのときにグリッドビューの値を取得する

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"     
    OnRowCancelingEdit="GridView1_RowCancelingEdit"  
    OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating" OnRowDeleting="GridView1_OnRowDeleting" OnPageIndexChanging="GridView1_PageIndexChanging" OnSelectedIndexChanged="GridView1_SelectedIndexChanged" Width ="1000px" class="grid" AllowPaging="True" PagerSettings-FirstPageText="First" PagerSettings-LastPageText="Last" PageButtonCount="2" PagerSettings-Mode="NumericFirstLast" PageSize="5"> 
    <PagerSettings Mode="NumericFirstLast" PageButtonCount="2" FirstPageText="First" LastPageText="Last"/> 
    <Columns> 
     <asp:TemplateField HeaderText="Id"> 
      <ItemTemplate> 
       <asp:CheckBox ID="CheckBox3" runat="server" /> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Connection"> 
      <ItemTemplate> 
       <asp:Label ID="lbl_conn" runat="server" Text='<%#Eval("Connection") %>'></asp:Label> 
      </ItemTemplate> 
     </asp:TemplateField> 

         <asp:TemplateField HeaderText="UserID"> 
      <ItemTemplate> 
       <asp:Label ID="lbl_Usrid" runat="server" Text='<%#Eval("UserID") %>'></asp:Label> 
      </ItemTemplate> 
      <EditItemTemplate> 
       <asp:TextBox ID="txt_Usrid" runat="server" Text='<%#Eval("UserID") %>'></asp:TextBox> 
      </EditItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Password"> 
      <ItemTemplate> 
       <asp:Label ID="lbl_pwd" runat="server" Text='<%#Eval("Password") %>'></asp:Label> 
      </ItemTemplate> 
      <EditItemTemplate> 
       <asp:TextBox ID="txt_pwd" runat="server" Text='<%#Eval("Password") %>'></asp:TextBox> 
      </EditItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Connection Name"> 
      <ItemTemplate> 
       <asp:Label ID="lbl_conName" runat="server" Text='<%#Eval("Connection_Name") %>'></asp:Label> 
      </ItemTemplate> 
      <EditItemTemplate> 
       <asp:TextBox ID="txt_conName" runat="server" Text='<%#Eval("Connection_Name") %>'></asp:TextBox> 
      </EditItemTemplate> 
     </asp:TemplateField> 


      <asp:TemplateField HeaderText="Edit"> 
      <ItemTemplate> 
       <asp:Button ID="btn_Edit" runat="server" Text=" Edit" class=" btnEdit" CommandName="Edit" /> 
      </ItemTemplate> 
      <EditItemTemplate> 
       <asp:Button ID="btn_Update" runat="server" class=" btnEdit" Text="Update" CommandName="Update"/> 
       <asp:Button ID="btn_Cancel" runat="server" class=" btnEdit" Text="Cancel" CommandName="Cancel"/> 
      </EditItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Delete"> 
      <ItemTemplate> 
       <asp:Button ID="btn_Delete" runat="server" class=" btnDelete" Text="Delete" CommandName="Delete" OnClientClick="return confirm('Are you sure you want to delete this event?')" /> 
      </ItemTemplate> 

     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

グリッドの下にボタンがあります。ボタンをクリックすると値を取得する必要があります。

protected void LinkButton1_Click(object sender, EventArgs e) 
{ 
    foreach (GridViewRow item in GdvTestData.Rows) 
    { 
     CheckBox chk = (item.FindControl("CheckBox3") as CheckBox); 
     if (chk.Checked) 
     { 
      string conn = item.Cells[1].Text; 
     } 
    } 
} 

しかし、私は間違って

答えて

2

グリッドのつもりどこstring conn = item.Cells[1].Text; にnull値を取得していますがheader rowdata rowfooter rowなどの異なる行タイプが含まれています。データ行から内容を取得する必要があります。次に、データ行の場合は行の型を最初に確認してから、セルの値を取得してください。また、行のタイプをチェックするにはGridViewRow.RowType Property

foreach(GridViewRow item in GdvTestData.Rows) { 
// check row is datarow 
if (item.RowType == DataControlRowType.DataRow) { 
    CheckBox chk = (item.FindControl("CheckBox3") as CheckBox); 
    if (chk.Checked) 
    {   
     Label MyLabel = (Label)item.FindControl("lbl_conn"); 
     string conn = MyLabel.Text; 
    } 
} 
} 
+0

は私がNULL値 – user3660473

+0

を取得していますそして、私は(item.RowType == DataControlRowType.DataRow) – user3660473

+0

は私も一度に選択することが唯一のチェックボックスを必要とする場合、それがあるべきだと思います。今、すべてのチェックボックスを選択することができました。 – user3660473

関連する問題