簡體   English   中英

選中復選框后獲取gridview行值

[英]Get gridview row values when checkbox checked

我有一個帶有復選框的gridview來選擇行。 在選中復選框時,我需要將行值放入字符串/會話中。 下面是代碼

<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;
        }
    }
}

但我得到string conn = item.Cells[1].Text; 我哪里錯了

Grid包含不同的行類型,如header rowdata rowfooter row 您需要從數據行獲取內容然后請檢查行類型,如果它是數據行,然后嘗試獲取單元格值。 GridViewRow.RowType屬性

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;   
    }
 }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM