用.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>
<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";/* 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>