目前我正在使用带有选择框,文本框和两个复选框的Dojo dgrid,但我无法禁用整行选择,当我单击第二个复选框时,dgrid选择并取消选择不工作并反映第一个复选框
1.如何在dojo Dgrid中禁用整行选择? 2.点击保存时如何获取Dgrid selectbox和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);
希望我能得到一些有价值的答案......
答案 0 :(得分:3)
要禁用直接选择,请在传递给构造函数的属性中设置selectionMode: "none"
。这不会影响selector
列的选择。
您仍然可以通过在传递给label
列插件的对象中设置selector
属性,在选择器列的标题单元格中设置标签。
如果您想使用Dijit表单小部件来更改项目中字段的值,您可能不应该自己定义renderCell
函数,而是使用editor
column plugin来完成工作当你致电save
时,保持数据状态并将其重新存入商店。
答案 1 :(得分:0)
非常感谢Ken给你的宝贵答案,正如你所说的编辑适合上述情况......但我有另一个疑问,就像我们不能在一个renderCell里面的用户编辑器一样,因为我需要的价值datachange上的文本框,所以我想在rendercell中使用编辑器....下面的代码工作正常,但TextBox没有放在特定节点内(文本框视图没有渲染),只要值为“True”...
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);
}
}),
}