从GridView获取值并将其放在文本框中

时间:2015-10-21 00:11:15

标签: asp.net gridview

我只想从GridView获取单元格值并将其放在不同的文本框中。我尝试了很多东西,但我无法让它发挥作用。也许你可以帮忙。谢谢。 这是我尝试的最后一件事:

 <asp:GridView ID="GridView1" runat="server" BackColor="#DEBA84" BorderColor="#DEBA84" BorderStyle="Solid" BorderWidth="1px" CellPadding="3" CellSpacing="2" AutoGenerateColumns="False" AutoGenerateSelectButton="True" onselectedindexchanged="GridView1_SelectedIndexChanged" OnSelectedIndexChanging="Gridview1_SelectedIndexChanging">    
                <Columns>
                        <asp:TemplateField ItemStyle-Width = "30px" HeaderText="Employee ID">
                            <ItemTemplate>
                                <asp:Label ID="lblEmpID" runat="server" Text='<%# Eval("emp_id") %>'></asp:Label>
                            </ItemTemplate>

<ItemStyle Width="30px"></ItemStyle>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Name">
                            <ItemTemplate>
                                <asp:Label ID="Label2" runat="server" Text='<%# Eval("emp_name") %>'></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Address">
                            <ItemTemplate>
                                <asp:Label ID="Label3" runat="server" Text='<%# Eval("emp_add") %>'></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Contact Num.">
                            <ItemTemplate>
                                <asp:Label ID="Label4" runat="server" Text='<%# Eval("emp_contact") %>'></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Hire Date">
                            <ItemTemplate>
                                <asp:Label ID="Label5" runat="server" Text='<%# Eval("hire_date") %>'></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Branch ">
                            <ItemTemplate>
                                <asp:Label ID="Label6" runat="server" Text='<%# Eval("hire_date") %>'></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                    <FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" />
                    <HeaderStyle BackColor="#A55129" Font-Bold="True" ForeColor="White" />
                    <PagerStyle ForeColor="#8C4510" HorizontalAlign="Center" />
                    <RowStyle BackColor="#FFF7E7" ForeColor="#8C4510" />
                    <SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" />
                    <SortedAscendingCellStyle BackColor="#FFF1D4" />
                    <SortedAscendingHeaderStyle BackColor="#B95C30" />
                    <SortedDescendingCellStyle BackColor="#F1E5CE" />
                    <SortedDescendingHeaderStyle BackColor="#93451F" />
                </asp:GridView>

代码背后:

protected void btnUpdate_Click(object sender, EventArgs e)
{
    EmployeeDLL edll = new EmployeeDLL();
    edll.Update_Employee(txtEmpID.Text, txtName.Text, txtAddress.Text, txtContact.Text, txtHireDate.Text, txtBranchID.Text);
    lblStatus.Text = "Record has been updated.";
    edll = null;
}
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
    // txtEmpID.Text = GridView1.SelectedValue.ToString();
            GridViewRow row = GridView1.SelectedRow;
    txtEmpID.Text = row.Cells[0].Text;
    txtName.Text = row.Cells[1].Text;

}

2 个答案:

答案 0 :(得分:0)

使用类似的东西

TextBox TextBoxLot = (TextBox)GridView1.Rows[rowIndex].Cells[1].FindControl("label");

答案 1 :(得分:0)

使用<asp:TemplateField>时,数据不在Cell内,但包含在Cell内的Control中。

因此,有两个步骤来读取值:

  1. 访问Cell内的控件
  2. 在步骤1中访问控制中的值
  3. 示例:

    protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
    {
        GridViewRow row = GridView1.SelectedRow;
    
        // Step 1: Access the Control inside Cell
           Label lblEmpId = (Label)row.Cells[0].FindControl("lblEmpID");
    
        // Step 2: Access the Value from Control in step 1
           string value = lblEmpId.Text;
    
        // Combine Step 1 & Step 2
        string valueEmpID = ((Label)row.Cells[0].FindControl("lblEmpID")).Text;
        string name = ((Label)row.Cells[0].FindControl("Label2")).Text;
    
    }