2013-10-29 64 views
0

目前我使用Dojo dgrid與選擇框,文本框和兩個複選框,但我不能夠禁用整個行選擇,也當我點擊第二個複選框dgrid選擇和取消選擇不工作,它反映的第一個複選框。Dojo Dgrid行選擇不起作用並檢索dgrid選擇器的值?

1.How禁止在道場Dgrid全行選擇? 2.How得到Dgrid選擇框和文本框Dgrid的值當我點擊保存? 3,如果 我使用選擇(複選框)我不能夠呈現該列的標籤?

var columns = {     
    person :{ 
    sortable: false, 
     renderCell: lang.hitch(this, function(object,value,node) { 
      if(value == true){ 
       myTextBox = new dijit.form.TextBox({ 
        name: "Amount", 
        value: "" , 
        placeHolder: "Enter Amount" 
       }).placeAt(node);         
      } 
     })       
    }, 
    description:{ 
     label:"description", 
     field:"description", 
     sortable: false, 
     renderCell : lang.hitch(this, function(object, 
       value, node, options) {    
      new Select({ 
       name : "select", 
       options : [ { 
        label : "Daily", 
        value : "daily" 
       }, { 
        label : "Weekly", 
        value : "weekly",         
       }] 
      }).placeAt(node); 

     }), 

    }, 
    email : selector({ 
     sortable:false, 
     field:"email" 
    }) 
    /*i tried this instead of using selectors inserting a checkbox so that i can remove complete row selection but not working*/ 
    email: { 
     sortable:false, 
     field:"email", 
     renderHeaderCell : function(node) { 
      var cellDiv = domConstruct.create("label", { 
       innerHTML : "Email" 
      }, node);       
       var checkBox = new CheckBox({ 
        name: "checkBox", 
        id:"emailAddress", 
        checked: false,    
      }, cellDiv); 
     }, 
     renderCell:createMessageLabel           
    } 

}; 

function createMessageLabel(object,value, node,options){ 
    console.log("node option",node); 
     var checkbox = new CheckBox({ 
     name: "checkBox", 
     id:"emailAddress", 
     checked: false,       
    }).placeAt(node);     
}; 



var grid = new GridView().show(gridData, columns, "", 
     "dgridAutoHeight", true); 
function addSelection(self, event) { 

    console.log("Row selected: ", event.rows[0].data); 
} 
function removeSelection(self, event) { 

    console.log("Row deselected: ", event.rows[0].data); 
} 
grid.startup(); 


grid.on("dgrid-select", lang.hitch(grid, addSelection, this), true); 
grid.on("dgrid-deselect", lang.hitch(grid, removeSelection, this), true); 

希望我能得到一些有價值的答案....

回答

2

要禁用直接選擇,在傳遞給構造屬性設置selectionMode: "none"。這不會影響通過selector列進行的選擇。

您應該仍然可以通過設置傳遞給selector列插件的對象中的label屬性來設置選擇器列標題單元格中的標籤。

如果你想使用dijit表單控件在項目改變字段的值的目的,你可能不應該自己定義renderCell功能,而是使用editor column plugin,這確實保持數據的工作狀態和當您致電save時,將其重新放回商店。

+0

嗨肯,謝謝你這麼多寶貴的answer..the編輯工作非常適合上述情況,但我有疑問,關於內部rendercell編輯請檢查以下內容回覆希望你能幫助我得到解決...... 。 – Malathesh

+0

+1良好的答案和良好的參考資源 – devdar

0

非常感謝你肯爲你的寶貴答案,正如你所說的編輯套裝非常適合上述情況....但我有一個疑問,另一個可以像一個renderCell裏面不是我們用戶編輯象下面爲我所需要的上datachange文本框的值,所以我想使用內部rendercell編輯....以下代碼是工作正常,但在TextBox不獲取置於一個特定的節點內(文本框視圖是沒有得到呈現)徘徊無論該值是「真」 .. ..

dollarThresholdAvailable :{ 
        field: "dollarThresholdAvailable", 
        label : "Threshold Limit", 
        sortable: false, 
        "class":"dollarThresholdAvailableValue", 
         renderCell: lang.hitch(this, function(object,value,node) { 
          if(value === true){ 
           editor({            
             field: "dollarThresholdAvailable", 
             sortable: false       
            },TextBox).placeAt(node); 
          } 
         }),   
       }