繁体   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