我在DataGrid中放入一列CheckBox供用户选定,但DataGrid翻页后,前一页选择的CheckBox的状态又再次变为初始状态,怎样解决这个问题。保存选定值,网上有Session来保存的例子,但我用C#实现不了。望高手帮忙,送以高分。例子在http://www.chinacs.net/archives/11/2004/08/10/1685.html

解决方案 »

  1.   

    我使用的是静态变量,在DataGrid的数据发生变化之前将是否选中记录在静态数组中,在根据静态数组对所有的记录进行操作。呵呵,有点麻烦。
      

  2.   

    chaos_blue(chaos)
    您看了我找的那个例子了吗?我现在就是编译不过去。
    我是用C#做的,错误出在:checks = Session["CheckBoxchecks"]
      

  3.   

    即使翻到下一页,也是重载Page,我的方法就是,把选定的值读出来之后放到label(visible=false)中就ok!然后用的时候将他取出来.
      

  4.   

    感覺放到數組里比較好,再把此數組入到session中保存,現次使用操作起來也比較方便。
      

  5.   

    在翻页邦定前把CHECKBOX的状态保存在自己定义的DATATABLE中,然后可以放入viewstate或Session中,翻页邦定后,从上面保存的地方取出该CHECKBOX的状态,根据里面已有的状态对该页的CHECKBOX作一下处理,这样可以做到这一点
      

  6.   

    我就是放不了到Session中,我写了一段。帮分析分析!
    DataGrid1_PageIndexChanged的事件:
         for(int i=0;i<DataGrid1.Items.Count;i++)
         {
    CheckBox h = (CheckBox)DataGrid1.Items[i].Cells[0].Controls[1];
    if(h.Checked==true)
    {
        checks[DataGrid1.CurrentPageIndex * DataGrid1.PageSize + i] = true;
    }
    else
    {
        checks[DataGrid1.CurrentPageIndex * DataGrid1.PageSize + i] = false;
    }
         }
         ViewState["NowPage1"] = e.NewPageIndex;
         GridBind1();
         for(int j=0;j<DataGrid1.Items.Count;j++)
         {
    CheckBox f = (CheckBox)DataGrid1.Items[j].Cells[0].Controls[1];
    if(checks[DataGrid1.CurrentPageIndex * DataGrid1.PageSize + j] == true)
    {
        f.Checked = true;
    }
    else
    {
        f.Checked = false;
    }
         }
    却实现不了,我设了个全局数组checks[]
    谢谢大家了