欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 » SmartGrid使用教程 » 正文

SmartGrid教程(十四)-SmartGrid排序与懒加载

创建时间:2012年03月14日 14:31  阅读次数:(4502)
分享到:

一、SmartGrid排序

与排序有关的属性包括:

属性名 含义

SortOption

获取或设置对列进行排序的选项,默认的排序方式为SortOption.Client。Smart.Web.UI.WebControls. SortOption类型(枚举)。可取值:Client、Server

如果需要客户端排序,只需要设置SortOption=”Client”即可。
如果需要服务端排序,应设置SortOption=”Server”,并扩充ColumnSort事件。

override protected void OnInit(EventArgse)
{
this.SmartGrid1.ColumnSort += newSmartGridSortEventHandler(SmartGrid1_ColumnSort);
}

SmartGridSortEventHandler的委托原型:
public delegate void SmartGridSortEventHandler(object sender, SmartGridSortEventArgse);

SmartGridSortEventArgs参数:
1),String Col;//排序栏位
2),SmartGridSortEventArgs构造函数:SmartGridSortEventArgs(stringcol)

二、懒加载


必须设置的属性包括:
AllowLoadOnDemand=true。获取或设置是否允许数据懒加载,懒加载主要用于数据量特别大的情况,当滚动条移动到最下端的时候,从服务器端取数据。默认值为false。
PageCount=总页数
OnLoadOnDemand=前台懒加载数据时的方法(懒加载前台方法)。通常在懒加载前台方法中利用AJAX技术(或WEB服务技术)获取数据并追加到SmartGrid中(append方法)。

(1)懒加载事件说明
Grid设置为懒加载,在滚动条移到最低端时,SmartGrid触发OnLoadOnDemand脚本事件,程序员可以响应该事件以进行数据的懒加载。
在服务器端设置懒加载的脚本方法名:this.DataGrid.OnLoadOnDemand = "myLoadOnDemand";

客户端定义脚本方法内容:

function myLoadOnDemand(grid,ev)
{
//这是示例,实际上数据可以一般会通过webservice behavior从服务器端取
var dom = new ActiveXObject("MSXML.DOMDocument");
dom.loadXML("< xml version='1.0' encoding='gb2312' ><detail><row k='0.6' editprop='o' no='CD034' name='TCL彩电' factory='TCL公司' address='福建' num='523' contact='老李'/><row k='0.5' editprop='o' no='CD096' name='康佳彩电' factory='康佳公司' address='四川' num='59' contact='李工'/><row k='0.5' editprop='o' no='RJ098' name='NC产品' factory='用友公司' address='北京' num='668' contact='王文京'/><row k='0.5' editprop='o' no='YJ908' name='联想电脑' factory='联想集团' address='北京' num='99' contact='柳传至'/><row k='0.5' editprop='o' no='LY897' name='路由器' factory='华为集团' address='北京' num='556' contact='赵川'/><row k='0.5' editprop='o' no='XS908' name='美格' factory='美格公司' address='美国' num='560' contact='开心'/><row k='0.5' editprop='A' no='XS988' name='三星显示器' factory='三星集团' address='韩国' num='668' contact='赵小窗'/><row k='0.5' editprop='A' no='XS786' name='ViewSonic' factory='ViewSonic' address='美国' num='444' contact='美丽'/><row k='0.5' editprop='A' no='YP343' name='奔腾III' factory='INTEL' address='美国' num='891' contact='开心'/><row k='0.5' editprop='A' no='CP789' name='毒龙' factory='MD' address='美国' num='88' contact='开心'/><row k='0.5' editprop='A' no='XS908' name='153V' factory='三星' address='韩国' num='44' contact='开心'/></detail>");
grid.append(dom.documentElement);
//grid的append方法是追加数据
//grid的clear方法是清空当前Grid中的数据
//grid的fill方法是先清空当前Grid中的数据,然后再将数据加到Grid当中。
e.currentPageIndex ++;
}

myLoadOnDemand有两个参数
1),grid:当前的Grid
2),ev:事件参数对象

ev有三个属性:
1),ev.pageCount:页数
2),ev.currentPageIndex:当前页索引
3),ev.pageSize:页面大小

(2)懒加载事件示例代码(使用微软AJAX控件)
注意一定要设置EnablePageMethods="true",而且所调用的后台方法必须是WebMethod静态方法

function myLazyLoad(grid, e) {
//第一页在页面Page_Load中加载
varPageIndex;
if(e.currentPageIndex <= 1) {
PageIndex = 1;
}
else
{
PageIndex = e.currentPageIndex;
}
PageIndex = PageIndex + 1;?
PageMethods.GetDemandDataString(PageIndex,e.pageSize,myLazyLoad_OnSucceeded, myLazyLoad_OnFailed);
e.currentPageIndex = PageIndex;
}

//成功时的处理方法
functionmyLazyLoad_OnSucceeded(result) {
vardom = new ActiveXObject("MSXML.DOMDocument");
dom.loadXML(result);
vargrid = document.getElementById("<%=SmartGrid2.ClientID%>");
grid.append(dom.documentElement);
}
//失败时的处理方法
functionmyLazyLoad_OnFailed(error) {
}

(3)懒加载后台代码示例
后台代码示例:

//懒加载某页数据
[System.Web.Services.WebMethod]
public static string GetDemandDataString(intpageIndex,int pageSize)
{
XmlDocumentdoc;
stringselectCmdString = "Select TOP(" +pageSize.ToString() + ") * FROM (Select*,"
+ "ROW_NUMBER() OVER (ORDER BY GID) AS ROWNUM FROM Storage as tab) astab"
+ "Where tab.ROWNUM > " + ((pageIndex - 1) * pageSize).ToString()
+ "ORDER BY tab.ROWNUM";
DataSetcurrentDs = new DataSet();
using(SqlConnection currentConn = new SqlConnection(_connectionstring))
{
//获取数据
currentConn.Open();
SqlDataAdaptercurrentSda = new SqlDataAdapter(selectCmdString,currentConn);
currentSda.Fill(currentDs, "Storage");
doc =MyConvertDataTableToXML(currentDs.Tables["Storage_Goods"]);
currentConn.Close();
}
returndoc.InnerXml;
}
来源:.net学习网
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf】

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论0条
  • 暂无任何评论,请留下您对本文章的看法,共同参入讨论!
发表评论:
留言人:
内  容:
请输入问题 96+65=? 的结果(结果是:161)
结  果: