2015-10-21 76 views
0

我只想从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; 

} 

回答

0

使用这样的

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

当使用<asp:TemplateField>,该数据是内部没有电池,但含有在Cell内部的Control中。

所以,有两个步骤,以读出的值:

  1. 访问控制内部细胞
  2. 访问从控制在步骤值1

实施例:

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; 

} 
相关问题