View Single Post
Old 24-Feb-2007, 12:23 AM   #2 (permalink)
Sangeetha
Fixed Error!
 
Sangeetha's Avatar

Posts: 139
Location: Chennai
Join Date: Feb 2007
Rep Power: 2 Sangeetha is on a distinguished road

IM:
Default Re: Edit GridView (ASP.NET 20 / C#)

Answer
If you need to stick to that kind of layout, then I would suggest something like this example:

<asp:GridView ID="GridView2" runat="server" Style="z-index: 103; left: 144px; position: absolute;
top: 212px" AutoGenerateColumns="False" OnRowCancelingEdit="GridView2_RowCancelingEdit"
OnRowEditing="GridView2_RowEditing" OnRowUpdating="GridView2_RowUpdating">
<Columns>
<asp:BoundField DataField="name" HeaderText="Name" />
<asp:BoundField DataField="number" HeaderText="Number" />
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="linkEdit" CommandName="Edit" Text="Edit" Width="45px" runat="server"
OnClick="EditClick" />
</ItemTemplate>
<EditItemTemplate>
<asp:LinkButton ID="linkUpdate" CommandName="Update" Text="Update" Width="45px" OnClick="UpdateClick"
runat="server" />
<asp:LinkButton ID="linkCancel" CommandName="Cancel" Text="Cancel" Width="45px" OnClick="CancelClick"
runat="server" />
</EditItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

protected void EditClick(object sender, EventArgs e)
{
LinkButton button = (LinkButton)sender;
GridView grid = (GridView)this.FindParent(button, typeof(GridView));

int index = GetItemIndex(button.UniqueID);
grid.EditIndex = index;
grid.DataBind();
}

protected void UpdateClick(object sender, EventArgs e)
{
LinkButton button = (LinkButton)sender;
}

protected void CancelClick(object sender, EventArgs e)
{
LinkButton button = (LinkButton)sender;
}

private int GetItemIndex(string input)
{
string pattern = @"ctl(?<index>\d+)";
Match match = Regex.Match(input, pattern);

if (match.Success)
return int.Parse(match.Groups["index"].Value) - 2;
return -1;
}

private Control FindParent(Control ctrl, Type type)
{
while (ctrl.GetType() != type)
ctrl = ctrl.Parent;

return ctrl;
}

protected void GridView2_RowEditing(object sender, GridViewEditEventArgs e)
{

}
protected void GridView2_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
GridView grid = (GridView)sender;
grid.EditIndex = -1;
grid.DataBind();
}
protected void GridView2_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
// Execute update SQL.
}
Sangeetha is offline   Reply With Quote