方法網(wǎng)上有很多,試了一下都有瑕疵。最后找了個看上去代碼比較少,比較順眼的,測試結(jié)果報錯說有幾個函數(shù)不存在,于是設(shè)置斷點調(diào)試,各個屬性查找有用的字段,終于找到。
現(xiàn)整理如下:
首先,要想在javascript中獲取treeview中帶checkbox的節(jié)點,需要設(shè)置treeview節(jié)點的某些屬性,我是在后臺代碼中添加的。
TreeNode newNode = new TreeNode();
newNode.Text = “showText”;
newNode.Value =id;
newNode.NavigateUrl = id; // 可用來在javascript中獲取需要的value或text值
newNode.ShowCheckBox = true; //顯示checkbox
newNode.Expanded = false; //節(jié)點折疊
newNode.Checked = true; //checkbox選中
獲取Treeview帶Input控件的節(jié)點:var tree = document.getElementById("treenameOrid").getElementsByTagName("input");
上邊設(shè)置的是checkbox,所以tree選出的就是帶checkbox的項。它不同于var treeitem=document.getElementById("treenameorid");不可遍歷直接獲取text和value;
獲取Treeview中Checkbox選中的節(jié)點,通常作為一個判斷條件: if (tree[i].type == "checkbox" && tree[i].checked) {內(nèi)容}
獲取各個節(jié)點需要的值:var s = tree[i].nextSibling.pathname; 發(fā)現(xiàn)這個費了我不少腦細胞。要用此屬性獲取值,必須設(shè)置屬性newNode.NavigateUrl = 需要的值;
好啦,現(xiàn)在給出一個javascript的完整代碼:
var idlist;
function GeSelectedNode() {
var getAllNodes = "";
idlist = new Array(); //實例化數(shù)組
var tree = document.getElementById("treenameOrid").getElementsByTagName("input");
for (var i = 0; i < tree.length; i++) {
if (tree[i].type == "checkbox" && tree[i].checked) {
var s = tree[i].nextSibling.pathname; //要用此屬性獲取值,必須設(shè)置屬性newNode.NavigateUrl = 需要的值;
getAllNodes += s + '/';
idlist.push(s); //將值添加入數(shù)組最后一項;
}
}
alert(tree.length);
alert(getAllNodes);
}
現(xiàn)在,運行起來,看看是不是你需要的結(jié)果,如果不對,別忘了設(shè)斷點調(diào)試哦。