我是XUL& amp;的新手Java脚本编程。
我刚刚意识到在合并两行之前我完全处于错误的方向,用户必须选择他们想要合并的值。我想在一个单独的窗口中用下拉菜单显示这些值。
我有一个“type =”复选框“”xul树,树是使用XML树模板形成的。
<treecol type="checkbox" label="CheckBox" editable="true"/>
2.我有一个下拉菜单,我想在那里显示所选择的树形单元格行。
如何获取选中复选框树行值的值并将其动态附加到下拉菜单中?请指导我的朋友。
这是我的XUL树代码:
tree editable="true" id="myTodoListTree" flex="1" seltype="multiple"
datasources="file://C:/mercredi.xml" ref="*" querytype="xml" enableColumnDrag="true">
<treecols>
<treecol type="checkbox" label="CheckBox" editable="true"/>
<treecol sortActive="true" sort="?name" id="name" label="FirstName" flex="1" persist="width ordinal hidden" sortDirection="ascending"/>
<splitter class="tree-splitter" />
<treecol sortActive="true" sort="?lastname" id="lastname" label="LastName" flex="1" persist="width ordinal hidden" sortDirection="ascending"/>
<splitter class="tree-splitter" />
<treecol sortActive="true" sort="?gmail" id="gmail" label="Gmail" flex="1" persist="width ordinal hidden" sortDirection="ascending"/>
<splitter class="tree-splitter" />
</treecols>
</tree>
<row>
<label value="FirstName"/>
<label value="LastName"/>
<label value="Gmail"/>
</row>
<row>
<menulist id="firstname">
<menupopup >
</menupopup>
</menulist>
</row>
</window>
首先我尝试获取所选行的值,但它不起作用: https://developer.mozilla.org/en/XUL/tree
function getCellChecked(tree, columnid)
{
alert('1');
var arr = [];
var column = tree.columns.getNamedColumn(columnid);
for (var i = 0; i < tree.view.rowCount; i++){
if (tree.view.getCellValue(i, column) == 'true')
arr.push(i);
}
return arr;
alert('final'+arr);
}
css文件:
treechildren::-moz-tree-checkbox(checked)
{
list-style-image: url("chrome://global/skin/checkbox/cbox-check.gif");
}
treechildren::-moz-tree-checkbox(disabled)
{
list-style-image: url("chrome://global/skin/checkbox/cbox-check-dis.gif")
}
请在此处查看xul树的图片:[url = http://postimage.org/image/2t1lnsczo/] [img] http://s1.postimage.org/2t1lnsczo/jeudi1.jpg [/ img] [/ URL]
答案 0 :(得分:2)
在用这个问题敲打我的头两天后,终于设法在朋友的帮助下解决问题了。 Firefox网站中很少有文档不太清楚,也没有适当的例子。
以下是解决方案: 此函数用于获取选中复选框树行的值,并将这些值附加到菜单列表中。树的类型是“复选框”,它是使用CSS实现的。
我们可以通过getNamedColumn方法tree.columns.getNamedColumn()
获取树行的值。
然后使用getCellValue()
方法获取所选行(行)的值(文本内容)。
function merge()
{
var tree = document.getElementById('myTodoListTree');//Id of the tree
for (var i = 0; i < tree.view.rowCount; i++) {
if (tree.view.getCellValue(i, tree.columns.getColumnAt(0)) == 'true')
//To get the cell values of the entire row, if the check-box is selected(True)//
{
alert(
tree.view.getCellText(i, tree.columns.getNamedColumn("name"))+"\n"+
tree.view.getCellText(i, tree.columns.getNamedColumn("lastname")));
//Testing my output with alert message.
//Appending my output to my menu-list.
var firstName= tree.view.getCellText(i, tree.columns.getNamedColumn("name"));
var menu = document.getElementById("firstname");
menu.appendItem(firstName);
var lastName= tree.view.getCellText(i, tree.columns.getNamedColumn("lastname"));
var menu = document.getElementById("laastname");
menu.appendItem(lastName);
}
}
return arr;
}