一、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;
}