2011-08-04 50 views
1

我是XUL的新手& Java腳本編程。如何獲取類型複選框XUL樹的行值JavaScript

我剛纔意識到,在合併兩行之前,我完全是在一個錯誤的方向,用戶必須選擇他們想要合併的值。我想在一個單獨的窗口中顯示這些值與下拉menulist。

我有一個「type =」複選框「」xul樹,樹使用XML樹模板形成。

  1. 如何獲取相應行的選定複選框的值(從選定行中獲取文本)複選框使用CSS實現。

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

回答

2

經過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; 
    }