模拟Windows Listview的HTC组件[5]

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

本文简介:选择自 spanzhang 的 blog

   row.children[i].style.width = parseint(columns[i].colheader.style.width) + 4;
 }

 row.selected = selected
}

//方法实现,设置某一行的选种状态
function selectrow(rowindex, selected)
{
 var row = rows[rowindex];
 if (row == null)
  return row;

 if (selected)
 {
  setrowcss(row, true);

  if (selectedrows.length > 0 && selectedrows[selectedrows.length - 1].rowindex == rowindex);
  else
  {
   selectedrows[selectedrows.length] = row;
   selchange.fire();
  }
 }
 else
 {
  setrowcss(row, false);
 }
 
 return row;
}

//方法实现
function clearselect()
{
 clickrow(-1);
}

//内部函数
function setcolwidth()
{
 if (rows.length <= 0)
  return;
  
 var tablewidth = 0;
 for (var i = 0; i < columns.length; ++i)
 {
  if (i == 0)
   columns[i].colheader.style.width = rows[0].children[i].clientwidth - 2;
  else
   columns[i].colheader.style.width = rows[0].children[i].clientwidth - 4;

  tablewidth += parseint(columns[i].colheader.style.width) + 4;
 }
 datatable.width = tablewidth - 2;
}

//方法实现
function addrow(rowdata)
{
 var row = datatable.insertrow();
 row.onmousedown = new function("clickrow(" + row.rowindex + ")");
 row.ondblclick = new function("var eventobject = createeventobject();eventobject.rowindex = "
  + row.rowindex + ";wantedit.fire(eventobject);");

 for (var i = 0; i < rowdata.length; ++i)
 {
  var td = row.insertcell();
  td.innerhtml = rowdata[i];
 }
 setrowcss(row, false);

 //setcolwidth();
 
 return row;
}

array.prototype.remove = function(dx)
{
 if(isnan(dx)||dx>this.length){return false;}
 this.splice(dx, 1);
}

//方法实现
function delrow(rowindex)
{
 datatable.deleterow(rowindex);
 
 //重新格式化
 for (var i = 0; i < rows.length; ++i)
 {
  rows[i].onmousedown = new function("clickrow(" + i + ")");
  rows[i].ondblclick = new function("wantedit.fire(" + i + ")");
  setrowcss(rows[i], false);
 }
 
 //如果删除了已经选中的
 var k = -1;
 for (var i = 0; i < selectedrows.length; ++i)
 {
  if (selectedrows[i].rowindex == -1)
   k = i;
  else
   setrowcss(selectedrows[i], true);
 }
 if (k >= 0)
  selectedrows.remove(k); 
}
</script>

测试文件(test_htc_listview.aspx)如下:
<%@ page language="c#" %>
<!doctype html public "-//w3c//dtd html 4.0 transitional//en" >
<html>
 <head>
  <title>test_htc_listview</title>
  <meta name="generator" content="microsoft visual studio .net 7.1">

本文关键:模拟Windows Listview的HTC组件
 

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

go top