![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
![]() |

|
| Knowledge Base Most common error and how to trouble shoot them off |
![]() |
|
Edit GridView (ASP.NET 20 / C#)
|
LinkBack | Thread Tools | Display Modes |
|
|
#1 (permalink) |
|
Fixed Error!
Posts: 141
Location: Chennai
Join Date: Feb 2007
Rep Power: 2
IM:
|
I have a gridview with one column called "Advertiser". When the "Edit" button is clicked, the litteral-control shall be replaced with an textbox control, and the "Edit button shall be replaced with "Save" and "Cancel" buttons. The datagrid is filled correctly with data, but I dont know how to write the "Update" or "Cancel" command. Here is my code so far: -------------- ASPX -------------- <asp:GridView runat="server" id="grdAdvertisers" AutoGenerateColumns="false" ShowHeader="false" OnRowEditing="grdAdvertisers_RowEditing"> <EditRowStyle BackColor="yellow" /> <Columns> <asp:TemplateField> <ItemTemplate> <asp:LinkButton CommandName="Edit" Text="Edit" Width="45px" runat="server" /> </ItemTemplate> <EditItemTemplate> <asp:LinkButton CommandName="Update" Text="Update" Width="45px" runat="server" /> <asp:LinkButton CommandName="Cancel" Text="Cancel" Width="45px" runat="server" /> </EditItemTemplate> </asp:TemplateField> <asp:TemplateField> <ItemTemplate> <%# DataBinder.Eval(Container.DataItem,"AdvertiserName ") %> </ItemTemplate> <EditItemTemplate> <asp:TextBox runat="server" ID="txtAdvertiser" Text='<%# DataBinder.Eval(Container.DataItem,"AdvertiserName ") %>' /> </EditItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> ------------------ ASPX.CS ------------------ private void bindAdvertisers() { SqlConnection Conn = new SqlConnection(Variables.ConnString); SqlCommand cmd = new SqlCommand("usp_AdvertiserNames", Conn); cmd.CommandType = CommandType.StoredProcedure; cmd.Connection.Open(); SqlDataReader dr = cmd.ExecuteReader(); this.grdAdvertisers.DataSource = dr; this.grdAdvertisers.DataBind(); cmd.Connection.Close(); cmd.Dispose(); Conn.Dispose(); } protected void grdAdvertisers_RowEditing(object sender, GridViewEditEventArgs e) { //Response.Write(e.NewEditIndex); } |
|
|
|
|
|
|
|
|
#2 (permalink) |
|
Fixed Error!
Posts: 141
Location: Chennai
Join Date: Feb 2007
Rep Power: 2
IM:
|
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. } |
|
|
|
![]() |
| Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
| Thread Tools | |
| Display Modes | |
|
|