Zeile in gridview mit Hyperlink in ASP.NET bearbeiten

Ich habe ein gridview, das Produktinstanzinfo anzeigt; Ich brauche einen Hyperlink in meiner Aktionsspalte, um eine view / Bearbeitungsseite aufzurufen, die die Zeilendaten anzeigt. Wie kann ich den Link die data aus dieser Zeile in die Bearbeitungsseite bringen?

Hinweis: Es gibt noch andere Fragen mit ähnlichen Titeln, aber sie decken dieses Thema nicht ab.

Verwenden Sie datakeys in der Gridview, mit datakey get die ID jedes Klicks Hyperlink, und dann können Sie diese ID verwenden, um zu bearbeiten oder löschen Sie die ausgewählten Elemente leicht. Im Code hinter nur finden Sie die Hyperlink-Steuerung, übergeben Sie die data-button und schreiben d Update sql für sie. Inorder, um Ihre data auf andere Seiten zu verschieben können Sie sessionen, aber wenn Sie eine kommerzielle Website Session entwickeln wird nicht eine gute Idee aufgrund seiner securitysprobleme, verwenden Sie Cookies in diesem Fall.

protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { if (Request.QueryString["productID"] != null) { productID = Convert.ToInt32(Request.QueryString["productID"]); bindData(productID) } ... } } protected void bindData(int productID) { //to avoid sql injection as mentioned below use parameters SqlConnection conn = new SqlConnection(ConnectionString); // define connection string globally or in your business logic conn.Open(); SqlCommand sql = new SqlCommand("Select * From [Table] Where ID = @productID",conn); SqlParameter parameter = new SqlParameter(); parameter.ParameterName = "@ID"; parameter.Value = productID; sql.Parameters.Add(parameter); conn.close() } 

Sie können auch Microsoft.ApplicationBlocks.Data.dll verwenden, um zu vermeiden, dass Sie Ado.net wiederholen, es wird Ihren Code reduzieren.

Versuche so etwas?

ViewProducts.aspx:

 <columns> <asp:HyperLinkField DataNavigateUrlFields="ProductID" HeaderText="Edit" ItemStyle-Width="80" DataNavigateUrlFormatString="EditProduct.aspx?productID={0}" Text="Select" ItemStyle-HorizontalAlign="Center" /> ... </columns> 

EditProduct.aspx:

  protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { if (Request.QueryString["productID"] != null) { productID = Convert.ToInt32(Request.QueryString["productID"]); ... } ... } } 

Es gibt n + 1 Möglichkeiten, dieses Problem zu lösen. Wenn Sie die SQL-dataquelle verwenden, können Sie akzentuell VS generieren die sql und bearbeiten Logik für Sie, wenn Sie keine spezifischen Anforderungen haben. Hier ist ein Code-Projekt- Tutorial .

Eine andere häufig verwendete Taktik ist, eine Befehlsschaltfläche der Zeile hinzuzufügen und das Befehlsargument mit der ID der Zeile zu bearbeiten, die du bearbeiten möchtest, dann im oncommand Ereignis behandeln was auch immer Logik Sie benötigen.

Sie können auch eine einfache HTML-Link und verwenden Sie get Parameter. Oder du kannst so sitzen, wie ich dort gesagt habe, ein paar Möglichkeiten, dieses Problem zu lösen.