2016-06-27 8 views
0

Dies ist eine einfache Frage, aber ich habe eine Gridview mit Boundfields für ID, Name, Gehalt. Ich habe ein Artikelvorlagenfeld, das den Benutzer auf eine andere Seite mit Textfeldern bringt. Ich möchte, dass der Benutzer, wenn er auf den zu aktualisierenden Hyperlink klickt, auf eine Seite mit Textfeldern geleitet wird, die auf die Werte aus der bestimmten Zeile in der Gridview voreingestellt sind, sodass der Benutzer sie bearbeiten und aktualisieren kann.Wie erhalten Sie Gridview-Zellenwerte in entsprechende Textfeldwerte auf einer anderen Seite?

 protected void lnkEditUpdate_Click(object sender, EventArgs e) 
    { 
     foreach (GridViewRow row in gvEmployee.Rows) 
     { 
      Employee newe = new Employee(); 
      newe.ID = int.Parse(((BoundField)row.FindControl("txtID")).Text); 
      newe.Name = ((BoundField)row.FindControl("lblName")).Text; 
      newe.Salary = ((BoundField)row.FindControl("Salary")).Text; 

      Session["Update"] = newEmployee; 
     } 
     Response.Redirect("~/EditUpdateEmployee.aspx"); 
    } 

ASPX-

<asp:GridView ID="gvEmployee" runat="server" AutoGenerateColumns="False" ShowFooter="True" DataKeyNames="ID" CellPadding="4" ForeColor="#333333" GridLines="None" 
    DataSourceID="EmployeeSQL" > 
    <AlternatingRowStyle BackColor="White" /> 
    <Columns> 
        <asp:TemplateField> 
      <ItemTemplate> 
       <asp:LinkButton ID="lnkEditUpdate" runat="server" Text="Edit/Update" OnClick="lnkEditUpdate_Click" /> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:BoundField DataField="ID" HeaderText="NetID" ReadOnly="True" SortExpression="ID" /> 
     <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" /> 
     <asp:BoundField DataField="Salary" HeaderText="Salary" SortExpression="Salary" /> 
     <asp:TemplateField> 

+0

Wenn Sie einen Link-Taste verwenden, können Sie Übergeben Sie die Werte aus Ihrer Gridview über querystring oder als Sitzungsvariablen an das nächste Formular. – jpaugh78

+0

Wie würden Sie die Gridview-Werte erhalten? Der obige Code hat nicht funktioniert – Jamie

Antwort

0

Für die Bearbeitung können Sie die Bearbeitungsfunktion von Gridview verwenden. Wenn Ihre Anforderung an Seite mit allen Einzelheiten zu umleiten ist (wie von Ihnen codiert) dann nicht Schleife durch gridview sondern holen nur die bestimmte Zeile, aus dem Linkbutton geklickt wird:

protected void lnkEditUpdate_Click(object sender, EventArgs e) 
     { 
      LinkButton linkEdit = (LinkButton)sender; // Point the particular row LinkButton clicked 
      GridViewRow row = (GridViewRow)linkEdit.NameingContainer;// Fetch the Row 
      Employee newe = new Employee(); 
      newe.ID = int.Parse((gvEmployee.Rows[row.RowIndex].Cells[1]).Text); 
      newe.Name = (gvEmployee.Rows[row.RowIndex].Cells[2]).Text; 
      newe.Salary = (gvEmployee.Rows[row.RowIndex].Cells[3]).Text; 
      Session["Update"] = newe; 
      Response.Redirect("~/EditUpdateEmployee.aspx"); 
     } 
+0

ist es link.Edit NamingConainer? weil NamingContainer nicht funktioniert hat. Auch bekomme ich einen Fehler für int.Parse (((BoundField) row.FindControl ("txtID")). Text) ;. Es besagt, dass Typ System.Web.UI.Control zu System.Web.UI.WebControls.BoundField – Jamie

+0

nicht konvertieren kann Könnte ich in Ihrem Gridview-Coding (ASPX) sehen, wie Sie das Feld erstellt haben? –

+0

Ich aktualisierte meinen Code über – Jamie

0

Verwenden Befehlsargument von Rasteransicht Eigenschaft in Taste

CommandArgument='<%# Eval("Column Name") %>' //this is for aspx 

dann hinter Code in nennen es

Response.write(e.commandargyment)//this is for aspx.cs 

für weitere Details sehen Sie dieses Tutorial Click here

nach diesem Abfrage String hoffentlich hilft Ihnen dies.

Verwandte Themen