用.Net实现基于CSS的AJAX开发(6)
来源:互联网 发布:钢琴自动弹奏软件 编辑:程序博客网 时间:2024/06/04 00:22
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></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"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
.Gll414{display:none;} 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"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
- 用.Net实现基于CSS的AJAX开发(6)
- 用.Net实现基于CSS的AJAX开发(1)
- 用.Net实现基于CSS的AJAX开发(3)
- 用.Net实现基于CSS的AJAX开发(2)
- 用.Net实现基于CSS的AJAX开发(4)
- 用.Net实现基于CSS的AJAX开发(5)
- 基于css样式绑定的样式驱动式AJAX程序开发(.net实现)
- 用GWT实现基于Ajax的Web开发
- 用GWT实现基于Ajax的Web开发
- 用GWT实现基于Ajax的Web开发
- 用ASP.NET 2.0实现AJAX风格的Web开发
- 用ASP.NET 2.0实现AJAX风格的Web开发
- 用ASP.NET 2.0实现AJAX风格的Web开发
- 用ASP.NET 2.0实现AJAX风格的Web开发
- 用ASP.NET 2.0实现AJAX风格的Web开发
- 基于AJAX.NET技术的DataGrid控件开发
- 基于Ajax.net的验证
- 基于.net 的jQuery ajax
- php分别做为cgi和module来运行的配置
- 用.Net实现基于CSS的AJAX开发(2)
- PHP的一个完整SMTP类
- 用.Net实现基于CSS的AJAX开发(4)
- 用PHP生成PDF文件 with FPDF
- 用.Net实现基于CSS的AJAX开发(6)
- PHP与已存在的Java应用程序集成
- 用.Net实现基于CSS的AJAX开发(5)
- 如何使用PHP DOM创建动态的XML文件
- ASP.NET如何进行性能优化问题(1)
- php+odbc+access数据库操作函数
- ASP.NET如何进行性能优化问题(2)
- 使用php 5时MySQL返回乱码的解决办法
- .net打包自动安装数据库