Reputation: 366
I have a DOJO Datagrid up and running. It is based on an itemFileWriteStore.
Through a formatter-function I added a button including a OnClick-Function to
Here's the Code:
//BUTTON-FORMATTER
function buttonFormatterRemove(){
var w = new Button({
label: "Löschen",
iconClass: "dijitEditorIcon deleteIcon",
showLabel: false,
onClick: function() {
console.log(this);
if (confirm("Datensatz wirklich löschen?")){
var item = grid.selection.getSelected();
var work_id = grid.store.getValue(item[0], "work_id");
//alert(work_id);
//FIRE REQUEST
request.post("<?php echo site_url('work/delete'); ?>/"+work_id, {
}).then(function(text){
if(text == 1){
console.log("Entry with ID"+work_id+" deleted!")
workStore.deleteItem(item[0]);
grid.startup();
} else alert("Es ist ein Fehler aufgetreten");
});
}
}
});
w._destroyOnRemove=true;
return w;
}
So far so good...it works! But only when I clicked into the datagrid before. Doesn't matter where I clicked.
If I refresh the page and click the button directly it throws:
Uncaught Error: dojo.data.ItemFileWriteStore: Invalid item argument.
Does anyone know how to get a handle to work_id in the specific row?
Thank you in advance! AFX
Upvotes: 2
Views: 3617
Reputation: 366
I was able to fix it myself:
I realized that the formatter has optional arguments:
//BUTTON-FORMATTER
function buttonFormatterRemove(col, rowIndex){
With those arguments I could get a handle on the row:
var rowdata = this.grid.getItem(rowIndex);
var work_id = rowdata['work_id'];
This blog-post helped me alot: http://documentumcookbook.wordpress.com/2010/08/06/dojo-datagrid-combining-field-values-in-formatter/
Thanks anyways!
Upvotes: 3