<script type="text/javascript">
</script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
varthat=sorting.that;
//被点击的目标链接
varlinkEl=getEventTarget(e);
//直接获取td,tr,thead和table
vartd=linkEl.parentNode;
vartr=td.parentNode;
varthead=tr.parentNode;
vartable=thead.parentNode;
//获得目标链接的columnId属性
varcolumn=linkEl.getAttribute('columnId')||td.cellIndex;
//找出当前列的排序方向
vararrows= CSS.getElementsByClass(td,'tableSortArrow','span');
varpreviousSortOrder='';
if(arrows.length>0)...{
previousSortOrder=arrows[0].getAttribute('sortOrder');
}
that.lastSortedTable=table.id;
//将哪一列被排序回馈给用户
//首先把所有的排序方向复位
vararrows= CSS.getElementsByClass(tr,'tableSortArrow','span');
for(varj=0;j<arrows.length;j++)...{
vararrowParent=arrows[j].parentNode;
arrowParent.removeChild(arrows[j]);
if(arrowParent!=td)...{
spanEl=createElement('span');
spanEl.className='tableSortArrow';
//加入两个空格
//spanEl.appendChild(document.createTextNode(''));
arrowParent.appendChild(spanEl);
}
}
//现在,回馈给用户
varspanEl=createElement('span');
spanEl.className='tableSortArrow';
if(null==previousSortOrder||''==previousSortOrder||'DESC'==previousSortOrder)...{
spanEl.appendChild(document.createTextNode('↑'));
td.setAttribute('sortOrder','ASC');
spanEl.setAttribute('sortOrder','ASC');
}else...{
spanEl.appendChild(document.createTextNode('↓'));
td.setAttribute('sortOrder','DESC');
spanEl.setAttribute('sortOrder','DESC');
}
td.appendChild(spanEl);
//以下为没有doPostBack的版本,已经取消
/**//*
if(td.firstChild.getAttribute('columnId')!=null){
window.location="?sortdirect="+td.getAttribute('sortOrder')+"&colid="+td.firstChild.getAttribute('columnId');
}
else{
window.location="?sortdirect="+td.getAttribute('sortOrder')+"&colid="+td.getAttribute('columnId');
}
*/
//使用__doPostBack进入后台处理
__doPostBack('Pars',"sortdirect="+td.getAttribute('sortOrder')+"&colid="+td.firstChild.getAttribute('columnId'));
returnfalse;
},
/**//**
*隔行换色
**/
doStripe:function(rowItem)...{
if(!this.isOdd)...{
CSS.addClassToElement(rowItem,'odd');
}else...{
CSS.removeClassFromElement(rowItem,'odd');
}
this.isOdd=!this.isOdd;
}
}
functionsortInit()...{
sorting.init();
}
addEvent(window,'load',sortInit)
后台:
publicDataViewSortBuilder(objectdataobj,DataViewdv)
...{
stringreq=Request.Form["__EVENTARGUMENT"];
stringp_sort=null;
stringp_colid=null;
if(req!=null)
...{
string[]args=req.Split('&');
foreach(stringarginargs)
...{
string[]hash=arg.Split('=');
if(hash[0].Equals("sortdirect"))
...{
p_sort=hash[1];
}
elseif(hash[0].Equals("colid"))
...{
p_colid=hash[1];
}
}
if(p_sort!=null&&p_colid!=null&&!p_colid.Equals("null"))
...{
SortDirect=p_sort;
intiColid=Int32.Parse(p_colid);
if(dataobjisDataGrid)
...{
foreach(DataGridColumndcin((DataGrid)dataobj).Columns)
...{
if(((Style)(Style)dc.ItemStyle). CSSClass.IndexOf("sortOrder")!=-1)
...{
((Style)(Style)dc.ItemStyle). CSSClass="";
}
}
((Style)(((DataGrid)dataobj).Columns[iColid].ItemStyle)). CSSClass+="sortOrder"+SortDirect;
DataGridgrid=(DataGrid)dataobj;
DataGridColumndgc=grid.Columns[iColid];
BoundColumnbc=(BoundColumn)dgc;
stringdf=bc.DataField;
dv.Sort=df+""+SortDirect;
}
if(dataobjisDataList)
...{
DataListdl=(DataList)dataobj;
((Style)dl.ItemStyle). CSSClass+="sortOrder"+SortDirect;
dv.Sort=dl.DataKeyField+""+SortDirect;
}
//自定义控件,,,可以自己实现一个
if(dataobjistable)
...{
tabletbl=(table)dataobj;
tbl.DataSource=ViewLogic.Data.DataSourceFactory.Create(dv.Table);
IListlist=(tbl).ColumnList;
tbl.ColName=list[iColid].ToString();
tbl.SortDriect=SortDirect;
dv.Sort=list[iColid]+""+SortDirect;
}
}
}
returndv;
}
样式绑定的用法如下
例如,排序样式绑定的用法:
前台:引用JS,并绑定样式sort
后台:
DataSetds=获取数据源ds
DataViewdv=ds.Tables[0].DefaultView;
dv=SortBuilder(控件,dv);
控件.DataSource=newdv; <script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript">
</script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
headingClicked:function(e)...{
varthat=sorting.that;
//被点击的目标链接
varlinkEl=getEventTarget(e);
//直接获取td,tr,thead和table
vartd=linkEl.parentNode;
vartr=td.parentNode;
varthead=tr.parentNode;
vartable=thead.parentNode;
//获得目标链接的columnId属性
varcolumn=linkEl.getAttribute('columnId')||td.cellIndex;
//找出当前列的排序方向
vararrows= CSS.getElementsByClass(td,'tableSortArrow','span');
varpreviousSortOrder='';
if(arrows.length>0)...{
previousSortOrder=arrows[0].getAttribute('sortOrder');
}
that.lastSortedTable=table.id;
//将哪一列被排序回馈给用户
//首先把所有的排序方向复位
vararrows= CSS.getElementsByClass(tr,'tableSortArrow','span');
for(varj=0;j<arrows.length;j++)...{
vararrowParent=arrows[j].parentNode;
arrowParent.removeChild(arrows[j]);
if(arrowParent!=td)...{
spanEl=createElement('span');
spanEl.className='tableSortArrow';
//加入两个空格
//spanEl.appendChild(document.createTextNode(''));
arrowParent.appendChild(spanEl);
}
}
//现在,回馈给用户
varspanEl=createElement('span');
spanEl.className='tableSortArrow';
if(null==previousSortOrder||''==previousSortOrder||'DESC'==previousSortOrder)...{
spanEl.appendChild(document.createTextNode('↑'));
td.setAttribute('sortOrder','ASC');
spanEl.setAttribute('sortOrder','ASC');
}else...{
spanEl.appendChild(document.createTextNode('↓'));
td.setAttribute('sortOrder','DESC');
spanEl.setAttribute('sortOrder','DESC');
}
td.appendChild(spanEl);
//以下为没有doPostBack的版本,已经取消
/**//*
if(td.firstChild.getAttribute('columnId')!=null){
window.location="?sortdirect="+td.getAttribute('sortOrder')+"&colid="+td.firstChild.getAttribute('columnId');
}
else{
window.location="?sortdirect="+td.getAttribute('sortOrder')+"&colid="+td.getAttribute('columnId');
}
*/
//使用__doPostBack进入后台处理
__doPostBack('Pars',"sortdirect="+td.getAttribute('sortOrder')+"&colid="+td.firstChild.getAttribute('columnId'));
returnfalse;
},
/**//**
*隔行换色
**/
doStripe:function(rowItem)...{
if(!this.isOdd)...{
CSS.addClassToElement(rowItem,'odd');
}else...{
CSS.removeClassFromElement(rowItem,'odd');
}
this.isOdd=!this.isOdd;
}
}
functionsortInit()...{
sorting.init();
}
addEvent(window,'load',sortInit)
后台:
publicDataViewSortBuilder(objectdataobj,DataViewdv)
...{
stringreq=Request.Form["__EVENTARGUMENT"];
stringp_sort=null;
stringp_colid=null;
if(req!=null)
...{
string[]args=req.Split('&');
foreach(stringarginargs)
...{
string[]hash=arg.Split('=');
if(hash[0].Equals("sortdirect"))
...{
p_sort=hash[1];
}
elseif(hash[0].Equals("colid"))
...{
p_colid=hash[1];
}
}
if(p_sort!=null&&p_colid!=null&&!p_colid.Equals("null"))
...{
SortDirect=p_sort;
intiColid=Int32.Parse(p_colid);
if(dataobjisDataGrid)
...{
foreach(DataGridColumndcin((DataGrid)dataobj).Columns)
...{
if(((Style)(Style)dc.ItemStyle). CSSClass.IndexOf("sortOrder")!=-1)
...{
((Style)(Style)dc.ItemStyle). CSSClass="";
}
}
((Style)(((DataGrid)dataobj).Columns[iColid].ItemStyle)). CSSClass+="sortOrder"+SortDirect;
DataGridgrid=(DataGrid)dataobj;
DataGridColumndgc=grid.Columns[iColid];
BoundColumnbc=(BoundColumn)dgc;
stringdf=bc.DataField;
dv.Sort=df+""+SortDirect;
}
if(dataobjisDataList)
...{
DataListdl=(DataList)dataobj;
((Style)dl.ItemStyle). CSSClass+="sortOrder"+SortDirect;
dv.Sort=dl.DataKeyField+""+SortDirect;
}
//自定义控件,,,可以自己实现一个
if(dataobjistable)
...{
tabletbl=(table)dataobj;
tbl.DataSource=ViewLogic.Data.DataSourceFactory.Create(dv.Table);
IListlist=(tbl).ColumnList;
tbl.ColName=list[iColid].ToString();
tbl.SortDriect=SortDirect;
dv.Sort=list[iColid]+""+SortDirect;
}
}
}
returndv;
}
样式绑定的用法如下
例如,排序样式绑定的用法:
前台:引用JS,并绑定样式sort
后台:
DataSetds=获取数据源ds
DataViewdv=ds.Tables[0].DefaultView;
dv=SortBuilder(控件,dv);
控件.DataSource=newdv; <script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript">
</script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>