Sign In| Join
Get Help:Ask a Question in our Forums|Report a Bug|More Help Resources
Last post Jan 01, 2013 12:37 AM by oned_gk
Member
2 Points
17 Posts
Dec 27, 2012 02:44 PM|LINK
Hi,
I am trying to update a checkbox on a listing page. The listing page, just has three fields
<asp:Gridview ID = "GridView1" AutoGenerateColumns="false" GridLines="None" runat="server" CssClass="mGrid" PagerStyle-CssClass="pgr" AlternatingRowStyle-CssClass="alt" OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating" DataKeyNames="fkStaffStaffNo" > <Columns> <asp:BoundField DataField="fkStaffStaffNo" HeaderText="Resource ID" /> <asp:HyperLinkField HeaderText="Staff Name" DataNavigateUrlFields="fkStaffStaffNo" DataNavigateUrlFormatString="/ResourceRateDetails.aspx?id={0}" DataTextField="StaffName" /> <asp:BoundField DataField="ResDesc" HeaderText="Description" /> <asp:TemplateField HeaderText="Status"> <EditItemTemplate> <asp:CheckBox ID="chkActive1" runat="server" Checked='<%# Eval("ResActive")%>' /> </EditItemTemplate> <ItemTemplate> <asp:CheckBox ID="chkActive" runat="server" Checked='<%# Eval("ResActive")%>' /> </ItemTemplate> </asp:TemplateField> </Columns> <Columns> <asp:CommandField ShowEditButton="True" EditText="Edit" /> </Columns> </asp:Gridview>
This is Code-behind
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) { GridViewRow row = GridView1.Rows[e.RowIndex]; //var chkActive1 = (CheckBox)row.FindControl("chkActive"); var chkActive1 = (CheckBox)GridView1.Rows[e.RowIndex].FindControl("chkActive"); using (var db = new CostBase2_DevEntities()) { var dataKey = GridView1.DataKeys[e.RowIndex]; if (dataKey != null) { int resourceid = Convert.ToInt32(dataKey.Value); Resource res = db.Resources.First(x => x.ResId == resourceid); if (chkActive1.Checked == null) { res.ResActive = Convert.ToBoolean(0); } else { res.ResActive = Convert.ToBoolean(1); } db.SaveChanges(); GridView1.EditIndex = -1; GridView1.DataBind(); Response.Redirect("/resources.aspx"); } }
 
I get Null Reference error. Any code examples would be appreciated.
All-Star
31818 Points
6509 Posts
Dec 27, 2012 03:00 PM|LINK
Dec 27, 2012 03:09 PM|LINK
Thanks I have made the changes
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) { GridViewRow row = GridView1.Rows[e.RowIndex]; //var chkActive1 = (CheckBox)row.FindControl("chkActive"); var chkActive1 = (CheckBox)GridView1.Rows[e.RowIndex].FindControl("chkActive1"); using (var db = new CostBase2_DevEntities()) { var dataKey = GridView1.DataKeys[e.RowIndex]; if (dataKey != null) { int resourceid = Convert.ToInt32(dataKey.Value); Resource res = db.Resources.First(x => x.ResId == resourceid); if (chkActive1.Checked) { res.ResActive = true; } else { res.ResActive = false; } db.SaveChanges(); GridView1.EditIndex = -1; GridView1.DataBind(); Response.Redirect("/resources.aspx"); Response.Redirect("/resources.aspx"); } } }
My .aspx file looks like
<asp:Gridview ID = "GridView1" AutoGenerateColumns="false" GridLines="None" runat="server" CssClass="mGrid" PagerStyle-CssClass="pgr" AlternatingRowStyle-CssClass="alt" OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating" DataKeyNames="fkStaffStaffNo" > <Columns> <asp:BoundField DataField="fkStaffStaffNo" HeaderText="Resource ID" /> <asp:HyperLinkField HeaderText="Staff Name" DataNavigateUrlFields="fkStaffStaffNo" DataNavigateUrlFormatString="/ResourceRateDetails.aspx?id={0}" DataTextField="StaffName" /> <asp:BoundField DataField="ResDesc" HeaderText="Description" /> <asp:TemplateField HeaderText="Status"> <EditItemTemplate> <asp:CheckBox ID="chkActive1" runat="server" Checked='<%# Eval("ResActive")%>' OnCheckedChanged="chkActive1_CheckedChanged" /> </EditItemTemplate> <ItemTemplate> <asp:CheckBox ID="chkActive" runat="server" Checked='<%# Eval("ResActive")%>' /> </ItemTemplate> </asp:TemplateField> </Columns> <Columns> <asp:CommandField ShowEditButton="True" EditText="Edit" /> </Columns> </asp:Gridview>
I still cant update
if (chkActive1.Checked) // this statement in the code behind is always false (when I add breakpoint.)
Dec 27, 2012 03:27 PM|LINK
Star
12092 Points
2035 Posts
Dec 27, 2012 06:06 PM|LINK
What does chkActive1_CheckedChanged do? Could it be changing your chkActive1?
118619 Points
18779 Posts
Dec 28, 2012 01:18 AM|LINK
CSharper2012 <asp:CheckBox ID="chkActive1" runat="server" Checked='<%# Eval("ResActive")%>' OnCheckedChanged
<asp:CheckBox ID="chkActive1" runat="server" Checked='<%# Eval("ResActive")%>' OnCheckedChanged
1) Please remove "OnCheckedChanged" event.
2) Please change from Eval to Bind, otherwises you cannot get the newly-updated value.
Dec 28, 2012 09:00 AM|LINK
I was trying a few different things, I have removed OncheckedChanged and the also changed the Eval to Bind, But I am still having the same problem. Thanks for all your help x
Dec 29, 2012 12:09 AM|LINK
CSharper2012 I get Null Reference error. Any code examples would be appreciated.
At which statement?
Dec 31, 2012 08:43 AM|LINK
Yes condition is always false at this statement
res.ResActive = value ==true ? Convert.ToBoolean(1) : Convert.ToBoolean(0);
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) { using (var db = new CostBase2_DevEntities()) { GridViewRow gridViewRowset = ((GridView) sender).Rows[e.RowIndex]; var dataKey = GridView1.DataKeys[e.RowIndex]; if (dataKey != null) { int resourceid = Convert.ToInt32(dataKey.Value); bool value = ((CheckBox) gridViewRowset.Cells[3].FindControl("chkActive")).Checked; Resource res = db.Resources.First(x => x.ResId == resourceid); res.ResActive = value == true ? Convert.ToBoolean(1) : Convert.ToBoolean(0); db.SaveChanges(); GridView1.EditIndex = -1; GridView1.DataBind(); Response.Redirect("/resources.aspx"); } } }
Jan 01, 2013 12:14 AM|LINK
CSharper2012 res.ResActive = value ==true ? Convert.ToBoolean(1) : Convert.ToBoolean(0);
You don't need to tell whether ResActive=value, just try this:
res.ResActive= (value==true ? Convert.ToBoolean(1) : Convert.ToBoolean(0));
CSharper2012
Member
2 Points
17 Posts
GridView - Update a checkbox
Dec 27, 2012 02:44 PM|LINK
Hi,
I am trying to update a checkbox on a listing page. The listing page, just has three fields
<asp:Gridview ID = "GridView1" AutoGenerateColumns="false" GridLines="None" runat="server" CssClass="mGrid" PagerStyle-CssClass="pgr" AlternatingRowStyle-CssClass="alt" OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating" DataKeyNames="fkStaffStaffNo" > <Columns> <asp:BoundField DataField="fkStaffStaffNo" HeaderText="Resource ID" /> <asp:HyperLinkField HeaderText="Staff Name" DataNavigateUrlFields="fkStaffStaffNo" DataNavigateUrlFormatString="/ResourceRateDetails.aspx?id={0}" DataTextField="StaffName" /> <asp:BoundField DataField="ResDesc" HeaderText="Description" /> <asp:TemplateField HeaderText="Status"> <EditItemTemplate> <asp:CheckBox ID="chkActive1" runat="server" Checked='<%# Eval("ResActive")%>' /> </EditItemTemplate> <ItemTemplate> <asp:CheckBox ID="chkActive" runat="server" Checked='<%# Eval("ResActive")%>' /> </ItemTemplate> </asp:TemplateField> </Columns> <Columns> <asp:CommandField ShowEditButton="True" EditText="Edit" /> </Columns> </asp:Gridview>This is Code-behind
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) { GridViewRow row = GridView1.Rows[e.RowIndex]; //var chkActive1 = (CheckBox)row.FindControl("chkActive"); var chkActive1 = (CheckBox)GridView1.Rows[e.RowIndex].FindControl("chkActive"); using (var db = new CostBase2_DevEntities()) { var dataKey = GridView1.DataKeys[e.RowIndex]; if (dataKey != null) { int resourceid = Convert.ToInt32(dataKey.Value); Resource res = db.Resources.First(x => x.ResId == resourceid); if (chkActive1.Checked == null) { res.ResActive = Convert.ToBoolean(0); } else { res.ResActive = Convert.ToBoolean(1); } db.SaveChanges(); GridView1.EditIndex = -1; GridView1.DataBind(); Response.Redirect("/resources.aspx"); } } 
I get Null Reference error. Any code examples would be appreciated.
oned_gk
All-Star
31818 Points
6509 Posts
Re: GridView - Update a checkbox
Dec 27, 2012 03:00 PM|LINK
CSharper2012
Member
2 Points
17 Posts
Re: GridView - Update a checkbox
Dec 27, 2012 03:09 PM|LINK
Thanks I have made the changes
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) { GridViewRow row = GridView1.Rows[e.RowIndex]; //var chkActive1 = (CheckBox)row.FindControl("chkActive"); var chkActive1 = (CheckBox)GridView1.Rows[e.RowIndex].FindControl("chkActive1"); using (var db = new CostBase2_DevEntities()) { var dataKey = GridView1.DataKeys[e.RowIndex]; if (dataKey != null) { int resourceid = Convert.ToInt32(dataKey.Value); Resource res = db.Resources.First(x => x.ResId == resourceid); if (chkActive1.Checked) { res.ResActive = true; } else { res.ResActive = false; } db.SaveChanges(); GridView1.EditIndex = -1; GridView1.DataBind(); Response.Redirect("/resources.aspx"); Response.Redirect("/resources.aspx"); } } }My .aspx file looks like
<asp:Gridview ID = "GridView1" AutoGenerateColumns="false" GridLines="None" runat="server" CssClass="mGrid" PagerStyle-CssClass="pgr" AlternatingRowStyle-CssClass="alt" OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating" DataKeyNames="fkStaffStaffNo" > <Columns> <asp:BoundField DataField="fkStaffStaffNo" HeaderText="Resource ID" /> <asp:HyperLinkField HeaderText="Staff Name" DataNavigateUrlFields="fkStaffStaffNo" DataNavigateUrlFormatString="/ResourceRateDetails.aspx?id={0}" DataTextField="StaffName" /> <asp:BoundField DataField="ResDesc" HeaderText="Description" /> <asp:TemplateField HeaderText="Status"> <EditItemTemplate> <asp:CheckBox ID="chkActive1" runat="server" Checked='<%# Eval("ResActive")%>' OnCheckedChanged="chkActive1_CheckedChanged" /> </EditItemTemplate> <ItemTemplate> <asp:CheckBox ID="chkActive" runat="server" Checked='<%# Eval("ResActive")%>' /> </ItemTemplate> </asp:TemplateField> </Columns> <Columns> <asp:CommandField ShowEditButton="True" EditText="Edit" /> </Columns> </asp:Gridview>I still cant update
if (chkActive1.Checked) // this statement in the code behind is always false (when I add breakpoint.)
oned_gk
All-Star
31818 Points
6509 Posts
Re: GridView - Update a checkbox
Dec 27, 2012 03:27 PM|LINK
paindaasp
Star
12092 Points
2035 Posts
Re: GridView - Update a checkbox
Dec 27, 2012 06:06 PM|LINK
What does chkActive1_CheckedChanged do? Could it be changing your chkActive1?
Decker Dong ...
All-Star
118619 Points
18779 Posts
Re: GridView - Update a checkbox
Dec 28, 2012 01:18 AM|LINK
Hi,
1) Please remove "OnCheckedChanged" event.
2) Please change from Eval to Bind, otherwises you cannot get the newly-updated value.
CSharper2012
Member
2 Points
17 Posts
Re: GridView - Update a checkbox
Dec 28, 2012 09:00 AM|LINK
I was trying a few different things, I have removed OncheckedChanged and the also changed the Eval to Bind, But I am still having the same problem. Thanks for all your help x
Decker Dong ...
All-Star
118619 Points
18779 Posts
Re: GridView - Update a checkbox
Dec 29, 2012 12:09 AM|LINK
Hi,
At which statement?
CSharper2012
Member
2 Points
17 Posts
Re: GridView - Update a checkbox
Dec 31, 2012 08:43 AM|LINK
Yes condition is always false at this statement
res.ResActive = value ==true ? Convert.ToBoolean(1) : Convert.ToBoolean(0);
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) { using (var db = new CostBase2_DevEntities()) { GridViewRow gridViewRowset = ((GridView) sender).Rows[e.RowIndex]; var dataKey = GridView1.DataKeys[e.RowIndex]; if (dataKey != null) { int resourceid = Convert.ToInt32(dataKey.Value); bool value = ((CheckBox) gridViewRowset.Cells[3].FindControl("chkActive")).Checked; Resource res = db.Resources.First(x => x.ResId == resourceid); res.ResActive = value == true ? Convert.ToBoolean(1) : Convert.ToBoolean(0); db.SaveChanges(); GridView1.EditIndex = -1; GridView1.DataBind(); Response.Redirect("/resources.aspx"); } } }Decker Dong ...
All-Star
118619 Points
18779 Posts
Re: GridView - Update a checkbox
Jan 01, 2013 12:14 AM|LINK
Hi,
You don't need to tell whether ResActive=value, just try this: