好像很普遍的问题
在gridview中有一模板列,里面是checkbox。比如我在第一页选中了某些结果,然后翻页到后面,再回来的时候选中的结果没有了。我用session保存了选中状态这样是可以的,可我觉得不好。大家有没有用过其他方法的。多谢!
在gridview中有一模板列,里面是checkbox。比如我在第一页选中了某些结果,然后翻页到后面,再回来的时候选中的结果没有了。我用session保存了选中状态这样是可以的,可我觉得不好。大家有没有用过其他方法的。多谢!
解决方案 »
- 请问web网页程序用access有什么缺点?
- 跪求一正则表达式.急呀....
- 请教怎么让进入窗体后numberlock的灯一直处于打开的状态(C#)?在线等。。
- asp.net运行后打开不了首页
- 在HTMLTable的单元格中插入TextBox,如何充满单元格
- $$$$$$各位帮忙,高薪重谢!$$$$$
- C#连Oracle,用OLEDB链接,却连不上去,是怎么回事?
- 关于将数据保存到数据库的问题;
- 求web页面datagrid更新代码!
- 怎样防止按钮按下时整个页面重载.
- 圣诞快乐!分不在多,进来快乐
- Object reference not set to an instance of an object.
如果是你自己搞的分页不是postback的那种session是最方便的吧
public partial class GridSamples_GridView_CheckBoxColumn : System.Web.UI.Page
{
/**//**//**//// <summary>
/// 获取或设置选中项的集合
/// </summary>
protected ArrayList SelectedItems
{
get
{
return (ViewState["mySelectedItems"] != null) ? (ArrayList)ViewState["mySelectedItems"] : null;
}
set
{
ViewState["mySelectedItems"] = value;
}
} protected void Page_Load(object sender, EventArgs e)
{
}
protected void GridView1_DataBinding(object sender, EventArgs e)
{
//在每一次重新绑定之前,需要调用CollectSelected方法从当前页收集选中项的情况
CollectSelected();
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
//这里的处理是为了回显之前选中的情况
if (e.Row.RowIndex > -1 && this.SelectedItems!=null)
{
DataRowView row = e.Row.DataItem as DataRowView;
CheckBox cb = e.Row.FindControl("CheckBox1") as CheckBox;
if(this.SelectedItems.Contains(row["id"].ToString()))
cb.Checked = true;
else
cb.Checked = false;
}
}
/**//**//**//// <summary>
/// 从当前页收集选中项的情况
/// </summary>
protected void CollectSelected()
{
ArrayList selectedItems = null;
if (this.SelectedItems == null)
selectedItems = new ArrayList();
else
selectedItems = this.SelectedItems; for (int i = 0; i < this.GridView1.Rows.Count; i++)
{
string id = this.GridView1.Rows[i].Cells[1].Text;
CheckBox cb = this.GridView1.Rows[i].FindControl("CheckBox1") as CheckBox;
if (selectedItems.Contains(id) && !cb.Checked)
selectedItems.Remove(id);
if (!selectedItems.Contains(id) && cb.Checked)
selectedItems.Add(id);
}
this.SelectedItems = selectedItems;
} protected void Button1_Click(object sender, EventArgs e)
{
//最后,需要对选中项进行操作之前,不能忘了还要最后一次收集当前页的选中情况
CollectSelected(); this.TextBox1.Text = string.Empty;
foreach (object tmp in this.SelectedItems)
this.TextBox1.Text += tmp.ToString() + ",";
}
}
=================================================
好像别无他法!!楼主的办法就是大家通常用的办法,
只不过保存的办法可能不同,有的是Session,有的是ViewState,或者Cookies!!