* 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>