返回首页
当前位置: 主页 > 网络编程 > .Net实例教程 >

SmartGrid排序与懒加载实现教程

时间:2017-02-07 23:25来源:知行网www.zhixing123.cn 编辑:麦田守望者

一、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;
}
------分隔线----------------------------
标签(Tag):SmartGrid控件
------分隔线----------------------------
推荐内容
猜你感兴趣