首页 > 编程 > .NET > 正文

用.Net实现基于CSS的AJAX开发(6)

2024-07-10 13:12:47
字体:
来源:转载
供稿:网友
  headingclicked: function(e) ...{
  
   var that = sorting.that;
  
   // 被点击的目标链接
   var linkel = geteventtarget(e);
  
   // 直接获取td, tr, thead 和 table
   var td = linkel.parentnode;
   var tr = td.parentnode;
   var thead = tr.parentnode;
   var table = thead.parentnode;
  
   // 获得目标链接的columnid属性
   var column = linkel.getattribute('columnid') || td.cellindex;
   // 找出当前列的排序方向
   var arrows = css.getelementsbyclass(td, 'tablesortarrow', 'span');
   var previoussortorder = '';
   if (arrows.length > 0) ...{
   previoussortorder = arrows[0].getattribute('sortorder');
   }
  
  
  
   that.lastsortedtable = table.id;
  
   // 将哪一列被排序回馈给用户
  
   // 首先把所有的排序方向复位
   var arrows = css.getelementsbyclass(tr, 'tablesortarrow', 'span');
   for (var j = 0; j < arrows.length; j++) ...{
   var arrowparent = arrows[j].parentnode;
   arrowparent.removechild(arrows[j]);
  
  
   if (arrowparent != td) ...{
   spanel = createelement('span');
   spanel.classname = 'tablesortarrow';
   // 加入两个空格
   // spanel.appendchild(document.createtextnode(' '));
   arrowparent.appendchild(spanel);
   }
  
  
   }
  
   // 现在,回馈给用户
   var spanel = 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'));
   return false;
   },
   /**//**
   * 隔行换色
   **/
   dostripe : function(rowitem) ...{
   if (!this.isodd) ...{
   css.addclasstoelement(rowitem, 'odd');
   } else ...{
   css.removeclassfromelement(rowitem, 'odd');
   }
   this.isodd = !this.isodd;
   }
  }
  
  function sortinit() ...{
   sorting.init();
  }
  
  addevent(window, 'load', sortinit)
  
  后台:
  
  
  
  public dataview sortbuilder(object dataobj,dataview dv)
   ...{
   string req = request.form["__eventargument"];
   string p_sort = null;
   string p_colid = null;
   if(req!=null)
   ...{
   string[] args = req.split('&');
   foreach (string arg in args)
   ...{
   string[] hash = arg.split('=');
   if(hash[0].equals("sortdirect"))
   ...{
   p_sort = hash[1];
   }
   else if(hash[0].equals("colid"))
   ...{
   p_colid = hash[1];
   }
   }
   if(p_sort!=null && p_colid!=null && !p_colid.equals("null"))
   ...{
   sortdirect = p_sort;
   int icolid = int32.parse(p_colid);
   if(dataobj is datagrid)
   ...{
   foreach (datagridcolumn dc in ((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;
   datagrid grid = (datagrid)dataobj;
   datagridcolumn dgc = grid.columns[icolid];
   boundcolumn bc = (boundcolumn)dgc;
   string df = bc.datafield;
   dv.sort = df + " " + sortdirect;
   }
   if(dataobj is datalist)
   ...{
   datalist dl = (datalist)dataobj;
   ((style)dl.itemstyle).cssclass += " sortorder" + sortdirect;
   dv.sort = dl.datakeyfield + " " + sortdirect;
   }
   // 自定义控件,,,可以自己实现一个
   if(dataobj is table)
   ...{
   table tbl = (table)dataobj;
   tbl.datasource = viewlogic.data.datasourcefactory.create(dv.table);
   ilist list = (tbl).columnlist;
   tbl.colname = list[icolid].tostring();
   tbl.sortdriect = sortdirect;
   dv.sort = list[icolid] + " " + sortdirect;
   }
   }
   }
  
   return dv;
   }
  
   样式绑定的用法如下
  
  例如,排序样式绑定的用法:
  
   前台: 引用js,并绑定样式 sort
   后台:
   dataset ds = 获取数据源ds
   dataview dv = ds.tables[0].defaultview;
   dv= sortbuilder(控件,dv) ;
   控件.datasource = newdv;


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表