Need some help to solve this.
I have a gridview and inside the gridview I have a checkbox and after clicking the checkbox, I am doing a postback event and trying to
Try this also if above not working exactly
DataTable dtGetStTable = (DataTable)ViewState["dtNewStudents"];
//Looping throgh Grid and deleting row after finding the checked row
for (int i = dtGetStTable.Rows.Count - 1; i > -1; i--)
{
GridViewRow row = GridView1.Rows[i];
bool isChecked = ((CheckBox)row.FindControl("CheckBox1")).Checked;
if (isChecked)
{
try
{
string RollNo = dtGetStTable.Rows[i]["RollNo"].ToString();
string Class = dtGetStTable.Rows[i]["Class"].ToString();
string Division = dtGetStTable.Rows[i]["Division"].ToString();
//Deleting the Reocrd from DataBase
TotalRecordDeleted += objSRE.DeleteTheSelectedRecord(RollNo, Class, Division);
dtGetStTable.Rows[i].Delete();
dtGetStTable.AcceptChanges();
}
catch (Exception ex)
{
//throw;
}
}
}
Try this:
CheckBox chkBx = sender as CheckBox;
Rather than iterate all the rows.
I haven't used CheckBox's in a GridView in this way myself. Usually I would use the GridView's OnRowCommand event instead and use the RowIndex or CommandArgument value to update the database.
Thinking about it OnRowcommand could be tricky for a CheckBox to fire, a better solution might be sticking with the CheckChanged event of the checkbox and navigate up to the GridViewRow serverside using controls NamingContainer. Something like:
GridViewRow row = chkBx.NamingContainer as GridViewRow;
I'm assuming the goes CheckBox => Cell => Row if you Google ASP.NET NamingContainer you'll get some more specifics.