режим редактирования gridview программно

У меня есть базовое gridview, к которому я привязываю данные из кода позади хранимой процедуры SQL.

<asp:GridView ID="gvCheckResults" runat="server" OnRowDataBound="gvCheckResults_RowDataBound" RowStyle-CssClass="gridViewRow" CssClass="gridView" AlternatingRowStyle-CssClass="gridViewAlternatingRow" HeaderStyle-CssClass="gridViewHeader"> </asp:GridView> 

DataBind:

 gvCheckResults.DataSource = dataContext.GetResults(Name, Address); gvCheckResults.DataBind(); if (!IsPostBack) { //Add Edit column. CommandField cField = new CommandField(); cField.EditText = "Edit"; cField.ShowEditButton = true; gvCheckResults.Columns.Insert(0, cField); } 

Как я могу программно добавить кнопку Edit в каждую строку результатов? Я знаю, как это сделать, когда объект источника данных настроен на странице aspx, но никогда не делал это программно.

Попробуйте

 <asp:TemplateField HeaderText="Edit> <ItemTemplate> <asp:LinkButton Id="lnkEdit" runat="server" CommandName="Edit" Text="Edit"/> </ItemTemplate> <EditItemTemplate> <asp:LinkButton Id="lnkEdit" runat="server" CommandName="Update" Text="Update"/> <asp:LinkButton Id="LinkButton1" runat="server" CommandName="Cancel" Text="Cancel"/> </EditItemTemplate> </asp:TemplateField> 

OnRowEditEvent() устанавливает индекс редактирования gridview в e.newrowindex и связывает его снова следующим образом.

 protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) { GridView1.EditIndex = e.NewEditIndex; GridView1.DataBind(); } protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) { //Write code TO UPDATE YOUR DATABESE THEN WRITE BELOW CODE IN LAST // To Find Text of TextBox to get updated value....you get it in string like this. //string strName = ((TextBox)grdview1.Rows[e.RowIndex].Cells[YourColumnIndexInWhichTexBoxAppear].Controls[0]).Text; GridView1.EditIndex = -1; GridView1.DataBind(); } protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) { GridView1.EditIndex = -1; GridView1.DataBind(); }