Try to use template field instead of bound field in this way:
<asp:GridView ID="gvDetails" runat="server" DataKeyNames="PKId" AutoGenerateColumns="False"><Columns><asp:TemplateField><HeaderTemplate><label>HomeTown</label></HeaderTemplate><ItemTemplate><asp:Label Text='<%# Eval("HomeTown") %>' runat="server" /></ItemTemplate></asp:TemplateField> <asp:ButtonField ButtonType="Button" CommandName="Select" HeaderText="Select" Text="Select" /></Columns></asp:GridView> <asp:DetailsView ID="DetailsView1" runat="server" DataKeyNames="PKId" AutoGenerateRows="False" OnItemCommand="DetailsView1_ItemCommand" >
<Fields> <asp:TemplateField> <HeaderTemplate> <label> HomeTown</label> </HeaderTemplate><InsertItemTemplate><asp:TextBox ID="txt HomeTown Insert" Text='<%# Bind("HomeTown") %>' runat="server" /></InsertItemTemplate><ItemTemplate> <asp:Label ID="lblHomeTown" runat="server" Text='<%# Eval("HomeTown ") %>' /> </ItemTemplate> <EditItemTemplate><asp:TextBox ID="txtHomeTown" Text='<%# Bind("HomeTown") %>' runat="server" /></EditItemTemplate></asp:TemplateField> <asp:TemplateField ShowHeader="False"> <ItemTemplate><asp:Button runat="server" CausesValidation="true" CommandName="Edit" Text="Edit" /> <asp:Button ID="btnCancelEdit" runat="server" CommandName="Cancel" Text="Cancel" /></ItemTemplate><InsertItemTemplate><asp:Button ID="btnAdd" runat="server" CommandName="Add" Text="Add" /><asp:Button ID="btnCancelAdd" runat="server" CommandName="Cancel" Text="Cancel" /></InsertItemTemplate><EditItemTemplate><asp:Button runat="server" CommandName="Update" Text="Update" /></EditItemTemplate> </asp:TemplateField> <asp:TemplateField ShowHeader="False"> <EditItemTemplate> </EditItemTemplate> </asp:TemplateField> </Fields></asp:DetailsView>Code Behind File:
protected void gvDetails_RowCommand1(object sender, GridViewCommandEventArgs e){if (e.CommandName == "Select"){gvDetails.Enabled = false;} private void BindDetailsView() { if (gvDetails.SelectedValue != null) { int indRow = Convert.ToInt32(gvDetails.SelectedValue); DetailsView1.DataSource = new LoginBO().GetSingleById(indRow); DetailsView1.DataBind(); } } protected void DetailsView1_ItemCommand(object sender, DetailsViewCommandEventArgs e) { if (e.CommandName.Equals("Edit")) { DetailsView1.ChangeMode(DetailsViewMode.Edit); BindDetailsView(); } if (e.CommandName == "Update") { int pkID = Convert.ToInt32(gvDetails.SelectedValue); Login l = new Login(); l.PkLoginId = pkID; TextBox txt; txt = (TextBox)DetailsView1.FindControl("txtHomeTown"); l.Name = txt.Text; new LoginBO().UpdateInfo(l); Response.Redirect(Request.RawUrl); } else if (e.CommandName == "Add") { Login l = new Login(); TextBox txt; txt = (TextBox)DetailsView1.FindControl("txtHomeTownInsert"); l.Name = txt.Text; new LoginBO().AddInfo(l); gvDetails.DataBind(); Response.Redirect(Request.RawUrl); } else if (e.CommandName == "Cancel") { Response.Redirect(Request.RawUrl); } }In LoginBO.cs add the following code:
DataClassesDataContext dc;dc=new DataClassesDataContext ();
public IEnumerable<Login> GetSingleById(int? pkLoginId){ var qry2 = (from l in dc.Loginswhere l.PkLoginId == pkLoginIdselect l);return qry2;}public void UpdateInfo(Login oldLogin){Login newLogin = new Login();newLogin = dc.Logins.Where(e => e.PkLoginId == oldLogin.PkLoginId).SingleOrDefault();if (newLogin != null){newLogin.HomeTown = oldLogin.HomeTown;}try{dc.SubmitChanges();}catch (Exception ex){throw new ApplicationException(ex.Message);}}}public void AddInfo(Login oldLogin){Login newLogin = new Login();if (newLogin != null){newLogin.HomeTown = oldLogin.HomeTown;dc.Logins.InsertOnSubmit(newLogin);try{dc.SubmitChanges();}catch (Exception ex){throw new ApplicationException(ex.Message);}}}
Comments
Post a Comment