Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Add a row in Dojo datagrid

Struggling to find a bit of code to easily understand.

How do you add a row and clear all rows in a Dojo datagrid (version 1.4.2). Lets say the data is 2 columns with customerID and address.

I am using

dojo.data.ItemFileWriteStore

to store values in - but again not quite sure how this should be used.

It can't be that hard.

Cheers.

like image 704
Vidar Avatar asked Jan 22 '23 13:01

Vidar


2 Answers

You can get the data store reference from the grid using grid.store, then you can use store.newItem() to create a new item in the store. This new item is added as a new row in the grid. For example, store.newItem({customerID : 1, address : "Somewhere"}).

To clear all the rows, you can either loop all the items in the data store and use deleteItem() to remove all the items, or use the internal function _clearData() in data grid to remove all the rows, or use setStore() to set a new empty store to the grid. I prefer to use a empty store to reset the grid.

like image 153
Alex Cheng Avatar answered Jan 31 '23 08:01

Alex Cheng


The above answers are correct, but you also need to call save() on the write store to "commit" the change. When you save, a widget using the store (datagrid for example) will refresh itself.

Also, newItem() returns the new item you just created so if you don't want to pass an object to newItem just modify its return value, then save() the store.

Pseudo code:

var i = store.newItem({});

store.setValue(i,"newattribute1","new value");
store.setValue(i,"newattribute2","new value 2");

store.save();

Here is the relevant docs for ItemFileWriteStore which tell how to use newItem(), setValue(), and save().

Instead of deleteItem, you should use setStore(new ItemFileWriteStore()), but I suspect there is a memory leak when you do this, be careful. This makes a new blank store to be used with the grid.

like image 24
srock Avatar answered Jan 31 '23 06:01

srock