我有一个绑定了数千条记录的 GirdView。每当我们遍历分页时,我都为 GirdView 应用了分页,请求再次发送到服务器,整个数据从 SQLServer DB 加载到 GridView 中,我想避免服务器往返。是否可以先加载数据 100 条记录,然后从 101 到 200 等等..从 DataTable 或 DataSet 滚动网格或分页时的记录?
与 Facebook 类似,仅当用户向下滚动页面时才会在页面上加载数据。是否可以使用 C# 在 ASP.NET 中进行操作?
请给我建议
我有一个绑定了数千条记录的 GirdView。每当我们遍历分页时,我都为 GirdView 应用了分页,请求再次发送到服务器,整个数据从 SQLServer DB 加载到 GridView 中,我想避免服务器往返。是否可以先加载数据 100 条记录,然后从 101 到 200 等等..从 DataTable 或 DataSet 滚动网格或分页时的记录?
与 Facebook 类似,仅当用户向下滚动页面时才会在页面上加载数据。是否可以使用 C# 在 ASP.NET 中进行操作?
请给我建议
将 DataTable 转换为 json 格式:
public static string DataTableToJSON(DataTable table)
{
List<Dictionary<string, object>> list = new List<Dictionary<string, object>>();
foreach (DataRow row in table.Rows)
{
Dictionary<string, object> dict = new Dictionary<string, object>();
foreach (DataColumn col in table.Columns)
{
dict[col.ColumnName] = row[col];
}
list.Add(dict);
}
JavaScriptSerializer serializer = new JavaScriptSerializer();
return serializer.Serialize(list);
}
是的,但可能相当复杂。您最好使用其中一种 Javascript 模型绑定框架(Backbone/KnockoutJs)来实现这一点。
但是,如果您确实想这样做,则需要将 GridView 放在 UpdatePanel 中,然后在 Javascript 中侦听窗口滚动事件,并且每次触发事件时重新绑定 GridView 数据源。
为此目的使用自定义分页,并在从数据库中获取数据时使用跳过并接受您的查询。