首页 > 代码库 > asp.net 翻页时用ViewState保存上一页checkbox勾选的值
asp.net 翻页时用ViewState保存上一页checkbox勾选的值
/// <summary>
/// checkbox勾选取消勾选事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void checkboxl_OnCheckedChanged(Object sender, EventArgs e)
{
string tempValue = http://www.mamicode.com/string.Empty;//拼接联合主键的临时变量
var checkbox = sender as CheckBox;
GridViewRow row = (GridViewRow)checkbox.NamingContainer;//获取行属性
Label lbSNo = (Label)row.FindControl("SNo");
Label lbItemNo = (Label)row.FindControl("ItemNo");
if (checkbox.Checked)//勾选
{
ViewState["retuvalue"] += lbSNo.Text.ToString() + "," + lbItemNo.Text + ";";
}
else//取消勾选
{
//当取消勾选时,将ViewState["retuvalue"]转成集合,去移除ViewState["retuvalue"]中的项
List<string> templist = ViewState["retuvalue"].ToString().TrimEnd(‘;‘).Split(‘;‘).ToList();
for (int i = 0; i < templist.Count; i++)
{
if (templist[i].ToString() == lbSNo.Text.ToString() + "," + lbItemNo.Text)
{
templist.Remove(templist[i]);
i--;
continue;
}
tempValue += templist[i] + ";";//再次拼接
}
ViewState["retuvalue"] = tempValue;
}
}
//航绑定事件
protected void gvData_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (ViewState["retuvalue"] != null)
if (e.Row.RowType == DataControlRowType.DataRow)
{
CheckBox check = (CheckBox)e.Row.Cells[10].FindControl("checkboxl");
//拿到两个主键拼接到string中
Label lbSNo = (Label)e.Row.FindControl("SNo");
Label lbItemNo = (Label)e.Row.FindControl("ItemNo");
if (ViewState["retuvalue"].ToString().TrimEnd(‘;‘).Contains(lbSNo.Text.ToString() + "," + lbItemNo.Text))
{
check.Checked = true;
}
}
}