[Users] Modify record in a store
Eric Lemoine
eric.lemoine at camptocamp.com
Mon Oct 5 18:27:34 CEST 2009
On Friday, October 2, 2009, James McManus <jmpmcmanus at gmail.com> wrote:
> After thinking about your suggestions, and looking at more documentation, I found it works if a define a record first. For example:
>
> var Record = GeoExt.data.FeatureRecord.create([
> { name : "name", mapping : "name" },
> { name : "type", mapping : "type" }
> ]);
>
> Store = new GeoExt.data.FeatureStore({
> fields: ['name', 'type'],
> });
>
> var Data = [
> { name : "stfid", type : "string" },
> { name : "ch_0209_r_tax_val", type : "float" }
> ];
>
> for (var i = 0; i < Data.length; i++) {
> Store.add(
> new Record({
> name : Data[i].name, type : Data[i].type
> })
> );
> }
>
> var record = Store.getAt(0);
> record.set("name", "ID");
>
> This changes stfid to ID in the DOM, under store.data.items.0.
>
> Using:
>
> var record = store.getAt(0);
> record.set("stfid", "ID");
sure, your field is now named "name" in your data model. Am I missing something?
>
> does not work.
>
> Jim
>
> On Thu, Oct 1, 2009 at 12:41 AM, Eric Lemoine <eric.lemoine at camptocamp.com> wrote:
> Hi
>
> On Thursday, October 1, 2009, James McManus <jmpmcmanus at gmail.com> wrote:
>> The id is an artifact of my experimentation. I should of left it out.
>> A cleaner version would be:
>>
>> var Store = new GeoExt.data.FeatureStore({
>> fields: [
>> {name: 'stfid', type: 'string'},
>> {name: 'ch_0209_r_tax_val', type: 'float'}
>> ]
>> });
>
> The array passed to the "field" option represents the data schema of
> the store, not the actual data. Use the "data" option to pass actual
> data.
>
>> var record = Store.getAt(0);
>> record.set("name","ID");
>
> if you want to change the value of the first record's stfid field you'll do
>
> var record = store.getAt(0);
> record.set("stfid", "ID");
>
> Hope this helps,
>
>>
>> in which I get the error message "record is undefined". That may mean that Store.getAt(0) is not working. Although I have not found an error.
>>
>> I've been looking at Ext JS documentation. That is where I got the idea to use record.set to modify a record. However, the examples I've seen look like:
>>
>> var Store = new. Ext.data.Store({
>> [{name: 'stfid', type: 'string'},
>> {name: 'ch_0209_r_tax_val']
>> }
>>
>> There is no fields, like I'm using in GeoExt.data.FeatureStore. The API for FeatureStore does not list fields as a config option. Is it inherited from Ext.data.Store?
>>
>> In any case I'm unsure how to work with it.
>>
>> Thanks
>> Jim
>>
>> On Wed, Sep 30, 2009 at 9:50 PM, Matt Priour <mpriour at kestrelcomputer.com <javascript:_e({}, 'cvml', 'mpriour at kestrelcomputer.com');>> wrote:
>>
>>
>>
>>
>>
>> You've got a whole lot of things going wrong
>> there.
>> You should really look into the ExtJS docs
>> regarding DataStores.
>> http://www.extjs.com/deploy/ext-2.2/docs/?class=Ext.data.JsonStore
>>
>> id is a property of the store, not the field. id
>> refers to the field whose value will be used as the record's id and used in
>> functions like getById.
>> the function record.set modifies the value found in
>> the field indicated in the first parameter and changes it to the value indicated
>> in the second parameter.
>> Your use of it fails because you don't have a field
>> named "name" .
>> If you did it would change the value in that field
>> in the record to the string "id"
>>
>> Hope that helps at least point you in the right
>> direction to begin accomplishing what you are wanting to do.
>>
>> Matt Priour
>> Kestrel Computer Consulting
>>
>>
>>
>>
>> From: James McManus <javascript:_e({}, 'cvml', 'jmpmcmanus at gmail.com');>
>> Sent: Wednesday, September 30, 2009 6:08 PM
>> To: users at geoext.org <javascript:_e({}, 'cvml', 'users at geoext.org');>
>> Subject: [Users] Modify record in a store
>>
>>
>> Hi - I would like to
>> modify a record in a store, I created using GeoExt.data.FeatureStore. The actual
>> store looks like:
>>
>> var store =
>> new
>> GeoExt.data.FeatureStore({
>> fields:
>> [
>> {id: new Date().getTime(), name: 'stfid', type:
>> 'string'},
>> {id: new Date().getTime(), name: 'ch_0209_r_tax_val', type:
>> 'float'}
>> ]
>> });
>>
>
--
Eric Lemoine
Camptocamp France SAS
Savoie Technolac, BP 352
73377 Le Bourget du Lac, Cedex
Tel : 00 33 4 79 44 44 96
Mail : eric.lemoine at camptocamp.com
http://www.camptocamp.com
More information about the Users
mailing list