类似ListView ,htc组件[6]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 lxx8402 的 blog

 *  arrhtml: 要替换的数据二维数组
*/
function formatcolumnvalue(columnname,arrhtml){
 var columnindex = findcolumn(columnname);
 if(columnindex == -1) return;
 
 if(typeof(arrhtml) != "object") return;

 var tmp = new object();
 for(var i=0; i<arrhtml.length; i++){
  tmp[arrhtml[i][0]] = arrhtml[i][1];
 }

 lvformat[columnname] = tmp;
}

/**
 * 根据字段名查找位置索引
 * 参数:
 *  columnname: 字段名
 * 返回:
  字段名位置索引值
*/
function findcolumn(columnname){
 var result = -1;
 for(var i=0; i<lvhead.length; i++){
  if(lvhead[i]._columnname == columnname){
   result = i;
   break;
  }
 }
 return result;
}

/**
 * 根据newxmlstr数据动态增加数据数组,并重画listview
 * 参数:
 *  newxmlstr: 新xml数据
 *  mode: 更新数据模式[add:增加数据 overlay:覆盖数据]
*/
function reload(newxmlstr,mode){
 xmldoc.loadxml(newxmlstr);
 var rows = xmldoc.documentelement.childnodes;
 var fields;
 if(typeof(mode) != "undefined" && mode == "overlay"){
  //覆盖原始数据
    lvdata = new array();
  for(var r=0;r<rows.length;r++){
   if(r>=maxrowcount){
    alert(text["maxrowcount"]);
    break;
   }
   fields = rows[r].childnodes;
   if(r>=lvdata.length) lvdata[r] = new array();
   var pos;
   for(var i=0;i<fields.length;i++){
    pos = findcolumnproperty(i,fields[i].text);
    if(pos != -1){
     for(var j=0;j<fields.length;j++){
      lvdata[r][j] = new data(fields[j].text,lvstyle[pos]._property);
     }
     break;
    }
    else
     lvdata[r][i] = new data(fields[i].text,"backgroundcolor:#ffffff;color:#000000;cursor:default");
   }
  }  
 }
 else{
  var new_lvdata = new array();
  //载入新数据
  for(var r=0;r<rows.length;r++){
   if(r>=maxrowcount){
    alert(text["maxrowcount"]);
    break;
   }
   fields = rows[r].childnodes;
   new_lvdata[r] = new array();
   var pos;
   for(var i=0;i<fields.length;i++){
    pos = findcolumnproperty(i,fields[i].text);
    if(pos != -1){
     for(var j=0;j<fields.length;j++){
      new_lvdata[r][j] = new data(fields[j].text,lvstyle[pos]._property);
     }
     break;
    }
    else
     new_lvdata[r][i] = new data(fields[i].text,"backgroundcolor:#ffffff;color:#000000;cursor:default");
   }
  }

  var totalrow = lvdata.length+new_lvdata.length;
  if(totalrow > maxrowcount){ //假如总数据大于最大数目则截断多余的旧数据
   var trunln = totalrow - maxrowcount;
   var start = lvdata.length-trunln-1;
   if(start<0) start = 0;
   //jscript5.5支持
   lvdata.splice(start,trunln);
  }
  //将新数据加入lvdata数组
  lvdata = new_lvdata.concat(lvdata);
 }
 drawdata();
}

/**
 * 根据pos,value在过滤条件数组对象查找列的property
 * 参数:
 *  pos: 当前列索引序号
 *    value: 当前列的值
 * 返回:
  找到返回索引序号,否则返回-1
*/
function findcolumnproperty(pos,value){
 for(var i=0; i<lvstyle.length; i++){
  if(lvhead[pos]._columnname == lvstyle[i]._columnname){
   if(value.indexof(lvstyle[i]._pattern) != -1)
    return i;
  }
 }
 return -1;
}
</script>
lvlang.xml:
<?xml version="1.0" encoding="gb2312"?>
<lvlang>
<!-- grid -->
<!-- button hints -->
 <searchtitle>填写搜索条件</searchtitle>
 <updatetitle>更新选择记录</updatetitle>
 <firsttitle>第一页</firsttitle>
 <prevtitle>向前翻一页</prevtitle>
 <nexttitle>向后翻一页</nexttitle>
 <lasttitle>最后一页</lasttitle>
 <inserttitle>增加一条新记录</inserttitle>

本文关键:javascript datagrid htc listview
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top