我有一个 Telerik RadGrid。 绑定到网格的初始数据源有 145 条记录。 我在网格中打开了文件管理以及分页,并且我的页面大小为 20。当我筛选到 75 条记录时,网格的 MasterTableView.Items 集合显示 20 条记录。 这与正在显示的网格中的内容相匹配。 但是,我需要对数据执行批量更改,并需要 75 条过滤记录。 网格中是否有某个位置包含 75 条过滤记录? 我想避免再次获取所有 145 条记录,然后手动筛选。
Telerik 不提供服务器端 API 来访问网格中过滤后的数据,但他们的论坛上提供了解决方法。
解决方案是在网格加载时保存过滤后的行主键,然后使用 ID 来获取数据。
bool flag = false;
protected void RadGrid1_ItemCommand(object sender, GridCommandEventArgs e)
{
if (e.CommandName == RadGrid.FilterCommandName)
{
flag = true;
}
}
protected void RadGrid1_PreRender(object sender, EventArgs e)
{
if (flag)
{
foreach (GridDataItem grdItem in RadGrid1.Items)
{
int iID = Convert.ToInt32(grdItem.GetDataKeyValue("ID").ToString());
. . . .
}
flag = false;
}
}
有关更多信息,请查看 Telerik 网站上的以下链接: http://www.telerik.com/community/forums/aspnet/grid/how-to-get-filter-data.aspx