目前,我正在使用带有选择框、文本框和两个复选框的Dojo dgrid,但我不能禁用整个行选择,而且当我单击第二个复选框时,dgrid选择和取消选择不起作用,它反映了第一个复选框。
1.如何在dojo Dgrid中禁用整行选择?2.单击保存时如何获取Dgrid selectbox和Dgrid textbox的值?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);希望我能得到一些有价值的答案...
发布于 2013-10-30 00:40:00
若要禁用直接选择,请在传递给构造函数的属性中设置selectionMode: "none"。这不会影响通过selector列进行的选择。
您应该仍然可以通过设置传递给selector列插件的对象中的label属性来设置选择器列的标题单元格中的标签。
如果您希望使用Dijit form小部件来更改项中字段的值,那么您可能不应该自己定义renderCell函数,而应该使用editor column plugin,它负责维护数据的状态,并在您调用save时将其放回存储中。
发布于 2013-11-26 21:09:26
非常感谢你的宝贵答案,肯,正如你所说的编辑器非常适合上面的situation....but,我有另一个疑问,比如我们不能像下面这样在renderCell中使用用户编辑器吗,因为我需要数据转换上的textbox的值,所以我想在rendercell....below代码中使用编辑器可以很好地工作,但是TextBox不会被放在一个特定的节点(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);
}
}),
} https://stackoverflow.com/questions/19651444
复制相似问题