如何获取类型复选框XUL树JavaScript的行值

时间:2011-08-04 12:26:24

标签: javascript checkbox tree xul

我是XUL& amp;的新手Java脚本编程。

我刚刚意识到在合并两行之前我完全处于错误的方向,用户必须选择他们想要合并的值。我想在一个单独的窗口中用下拉菜单显示这些值。

我有一个“type =”复选框“”xul树,树是使用XML树模板形成的。

  1. 如何获取相应行的选定复选框的值(从所选行中获取文本)复选框是使用CSS实现的。
  2. <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]

1 个答案:

答案 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;  
    }