原因你是每换页时就重新绑定数据,所以你应该在换页之前拿到你已经选择的内容
或记录,然后放到Session里

解决方案 »

  1.   

    private void SaveData()
    {
    customerDS = (CustomerDataset)Session["Hoten.Boss.CustInfoSys.Web.custinfo.serviceinfo.customerDS"];
    int i;
    for (i = dgUserSP.CurrentPageIndex * dgUserSP.PageSize;
    i < (dgUserSP.CurrentPageIndex+1) * dgUserSP.PageSize && i < customerDS.USERS.Count;
    i++)
    {
    DataGridItem rowItem = dgUserSP.Items[i%dgUserSP.PageSize];
    string userID = customerDS.USERS[i].USER_ID;
    DataList dataList = (DataList)rowItem.FindControl("DataList1");
    foreach (DataListItem colItem in dataList.Items)
    {
    string spID=customerDS.SP[colItem.ItemIndex].SP_ID;
    CheckBox check=(CheckBox)colItem.FindControl("CheckBox2");
    //
    if((check.Checked) && (check.ForeColor==Color.Black))
    {
    customerDS.USER_SP.AddUSER_SPRow(userID, spID);
    }
    //
    if((check.Checked==false) && (check.ForeColor==Color.Red))
    {
    customerDS.USER_SP.FindByUSER_IDSP_ID(userID, spID).Delete();
    }
    }
    }
    }==================================================================================
    private void BindGrid()
    {
    //从Session中得到customerDS
    customerDS = (CustomerDataset)Session["Hoten.Boss.CustInfoSys.Web.custinfo.serviceinfo.customerDS"];
    dgUserSP.DataBind();
    int i;
    for (i = dgUserSP.CurrentPageIndex * dgUserSP.PageSize;
    i < (dgUserSP.CurrentPageIndex+1) * dgUserSP.PageSize && i < customerDS.USERS.Count;
    i++)
    {
    DataGridItem rowItem = dgUserSP.Items[i%dgUserSP.PageSize];
    string userID = customerDS.USERS[i].USER_ID;
    DataList dataList = (DataList)rowItem.FindControl("DataList1");
    foreach (DataListItem colItem in dataList.Items)
    {
    string spID = customerDS.SP[colItem.ItemIndex].SP_ID;
    CheckBox check = (CheckBox)colItem.FindControl("CheckBox2");
    //如果使用此SP,置相应checked为true,forecolor为red
    check.Checked = customerDS.USER_SP.FindByUSER_IDSP_ID(userID, spID) != null;
    check.ForeColor = customerDS.USER_SP.FindByUSER_IDSP_ID(userID, spID) != null? Color.Red : Color.Black;
    }
    }
    }
    ==============================================================================
    private void dgUserSP_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
    {
    SaveData();
    dgUserSP.CurrentPageIndex=e.NewPageIndex;
    BindGrid();
    }
    //你参考一下这个例子,就是把选定的项保存到DataSet中,需要的时候更新就行了!
      

  2.   

    这个的确没有什么太好的方法
    如果数据量不是很大的话就不要分页了,呵呵
    非要分页的话可以考虑把选中的行的主键存在hashtable中
    然后换页的时候读取hashtable