Maintain Gridview Checkbox state after moving Page
this is my remember values code for checkbox
private void RememberOldGridValues()
{
ArrayList oUserCheckedList = new ArrayList();
int index = -1;
int Value=0;
foreach (GridViewRow row in gridViewResults.Rows)
{
if (((CheckBox)row.FindControl("chkSelect")).Checked)
{
index = row.RowIndex;
Value=(int)gridViewResults.DataKeys[row.RowIndex].Value;
if (Session["CHECKED_ITEMS"] != null)
oUserCheckedList = (ArrayList)Session["CHECKED_ITEMS"];
if (oUserCheckedList.Count == 1)
{
oUserCheckedList.RemoveAt(0);
}
if (!oUserCheckedList.Contains(index))
oUserCheckedList.Add(index);
oUserCheckedList.Add(Value);
}
if (index >= 0)
break;
}
if (oUserCheckedList != null && oUserCheckedList.Count > 0)
Session["CHECKED_ITEMS"] = oUserCheckedList;
}
and this is repopulates I'm not able to get datati开发者_如何学Pythonme in grid view.
private void RePopulateGridValues()
{
int value;
ArrayList oUserCheckedList = (ArrayList)Session["CHECKED_ITEMS"];
if (oUserCheckedList != null && oUserCheckedList.Count > 0)
{
foreach (GridViewRow row in gridViewResults.Rows)
{
string str = oUserCheckedList[0].ToString();
value=Convert.ToInt32(oUserCheckedList[1].ToString());
int i = Convert.ToInt32(str);
if (row.RowIndex == i)
{
if (value == Convert.ToInt32(row.DataItemIndex.ToString()))
{
CheckBox myCheckBox = (CheckBox)row.FindControl("chkSelect");
myCheckBox.Checked = true;
}
}
}
}
You are repopulating your Gridview Checkboxes in the wrong way. You have to use a RowDatabound Event.
protected void grd_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DataRow dr = ((DataRowView)e.Row.DataItem).Row;
if (ArrayCollection.Find(dr["KeyColumnName"].ToString()))
//Dont try to store the index of your Grid and checkbox value, as if the page Index change your Grid Index will will change. try to store KeyColumnName Value and then compare here and upon bases of set Checkbox = Chcekced
{
CheckBox myCheckBox = (CheckBox)row.FindControl("chkSelect");
myCheckBox.Checked = true;
}
}
}
精彩评论