您的位置:首页 > 编程语言 > ASP

asp.net Telerik控件实现分页不丢失记录

2013-09-18 15:59 423 查看
#region 定义数组

public ArrayList CkList
{
get
{
return (ViewState["cklist"] != null) ? (ArrayList)ViewState["cklist"] : null;
}
set { ViewState["cklist"] = value; }
}

#endregion

#region 每次页面显示前加载数据

protected void RadGrid1_ItemDataBound(object sender, Telerik.Web.UI.GridItemEventArgs e)
{
if (e.Item is GridDataItem)
{
Label lbl = e.Item.FindControl("lblRowNumber") as Label;
int currPageIndex = RadGrid1.MasterTableView.CurrentPageIndex;
int pageSize = RadGrid1.MasterTableView.PageSize;
lbl.Text = Convert.ToString(e.Item.ItemIndex + 1 + currPageIndex * pageSize);

GridDataItem item = e.Item as GridDataItem;
CheckBox ck = e.Item.FindControl("chkAll") as CheckBox;
string tid = item.GetDataKeyValue("PK_VIPAddress").ToString();
if (CkList != null)
{
if (CkList.Contains(tid))
{
ck.Checked = true;
}
if (CkList != null)
{
hfRowId.Value = CkList.Count.ToString();
}
}
}
}

#endregion

#region 每次翻页的时候存储选择记录和当前页数,重新绑定radgrid

protected void RadGrid1_PageIndexChanged(object sender, GridPageChangedEventArgs e)
{
SavePhone();
RadGrid1.CurrentPageIndex = e.NewPageIndex;
RadGrid1.Rebind();
}

#endregion

#region 保存当前选择记录

private void SavePhone()
{
ArrayList cklist = null;
if (CkList == null)
{
cklist = new ArrayList();
}
else
{
cklist = CkList;
}
foreach (GridDataItem item in RadGrid1.MasterTableView.Items)
{
string tid = item.GetDataKeyValue("PK_VIPAddress").ToString();

CheckBox ck = item.FindControl("chkAll") as CheckBox;

if (ck.Checked && !cklist.Contains(tid))
{
cklist.Add(tid);
}
else if (!ck.Checked && cklist.Contains(tid))
{
cklist.Remove(tid);
}
this.CkList = cklist;
if (CkList != null)
{
hfRowId.Value = CkList.Count.ToString();
}
}
this.Cache["CkList"] = CkList; //存储选择记录,方便另外页面调用
}

#endregion
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: