Hello all,
I have a gridview where data is being polulated dynamically. In my Gridview I have a column containing a linkbutton (Edit) which further populates Update & Cancel.
How do I incorporate Return Confirm event on Edit button Click on RowDataBound event as it gets normally done when GridView datasource is there on HTML page itself?
My Gridview is populated dynamically from CodeBehind.
Code Behind:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow || e.Row.RowType == DataControlRowType.Header)
{
e.Row.Cells[0].Visible = false;
}
}
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
this.BindGrid();
}
protected void OnCancel(object sender, EventArgs e)
{
GridView1.EditIndex = -1;
this.BindGrid();
}
protected void OnUpdate(object sender, EventArgs e)
{
GridViewRow row = (sender as LinkButton).NamingContainer as GridViewRow;
int VbId = Convert.ToInt32(GridView1.DataKeys[row.RowIndex]["VBId"]);
string status = (row.FindControl("DDStatus") as DropDownList).SelectedItem.Value;
DataTable dt = ViewState["dt"] as DataTable;
dt.Rows[row.RowIndex]["BStatus"] = status;
ViewState["dt"] = dt;
using (SqlConnection con2 = new SqlConnection(ConfigurationManager.ConnectionStrings["PSn2"].ConnectionString))
{
con2.Open();
SqlCommand cmd2 = new SqlCommand("Update AVS Set BStatus = @BStatus Where VBId = @VBId", con2);
cmd2.Parameters.AddWithValue("@BStatus", status);
cmd2.Parameters.AddWithValue("@VBId", VbId);
cmd2.ExecuteNonQuery();
con2.Close();
}
GridView1.EditIndex = -1;
this.BindGrid();
}
HTML:
<asp:GridView ID="GridView1" runat="server" AllowSorting="True"
AutoGenerateColumns="False" DataKeyNames="VBId" Font-Size="X-Small"
onrowdatabound="GridView1_RowDataBound" onrowediting="GridView1_RowEditing">
<Columns>
<asp:BoundField DataField="VBId" HeaderText="Id" InsertVisible="False" ReadOnly="True" SortExpression="VBId" />
<asp:TemplateField ControlStyle-CssClass="gvpad">
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" Text="Edit" runat="server" CommandName="Edit" />
</ItemTemplate>
<EditItemTemplate>
<asp:LinkButton ID="LinkButton2" Text="Update" runat="server" OnClick="OnUpdate" OnClientClick="return Validate(this)" />
<asp:LinkButton ID="LinkButton3" Text="Cancel" runat="server" OnClick="OnCancel" />
</EditItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="BDate" HeaderText="Date<br/>(dd/MM/yyyy)" HtmlEncode="false" SortExpression="BDate" DataFormatString="{0:dd/MM/yyyy}" ReadOnly="true">
<ItemStyle CssClass="gvpad" />
<HeaderStyle CssClass="gvpad" />
</asp:BoundField>
<asp:BoundField DataField="BName" HeaderText="Name" SortExpression="BName" ReadOnly="true">
<ItemStyle CssClass="gvpad" />
<HeaderStyle CssClass="gvpad" />
</asp:BoundField>
<asp:BoundField DataField="BContactNo" HeaderText="Contact No" SortExpression="BContactNo" ReadOnly="true">
<ItemStyle CssClass="gvpad" />
<HeaderStyle CssClass="gvpad" />
</asp:BoundField>
<asp:TemplateField HeaderText="Status" SortExpression="BStatus" ControlStyle-CssClass="gvpad" ItemStyle-CssClass="gvpad">
<ItemTemplate>
<%# Eval("BStatus")%>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="DDStatus" runat="server">
<asp:ListItem Text="Select" Value="" />
<asp:ListItem>Availed</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
</Columns>
<HeaderStyle BackColor="Gray" ForeColor="White" BorderColor="White" />
<EditRowStyle BackColor="Red" BorderColor="Black" />
</asp:GridView>