Hi Chris,

 

Thanks for advising about the ensureVisible issue.

 

I tried your suggestion again as I had already tried that with no success -
still no success. It always seems to set the row focus on the
previous-last-point added not the last-point-added and does not set the last
record in view either. 

 

Also, there is no difference if I leave the
grid.getView().focusRow(recno-1); off all together. I get the feeling its
just setting to the last record before it actually gets included in the
grid?

 

Thanks for the help on this frustrating issue.

 

Cheers, brad....

 

From: users-boun...@geoext.org [mailto:users-boun...@geoext.org] On Behalf
Of Christian Mayer
Sent: Friday, 11 November 2011 7:53 PM
To: users@geoext.org
Subject: Re: [Users] GeoExt.grid.featureSelectionModel problem

 

Hi Brad,

I just tried to reconstruct what you described:
What I have done:
  - I added a feature to an existing feature grid by adding this feature to
the corresponding layer -> works fine
  - Then I executed gridPanel.getSelectionModel().selectLastRow() what
selects me the last feature in my grid (the newly added feature)
  - grid.getView().ensureVisible(recno, 0, true):  I could not detect a
function ensureVisible of a Ext.grid.GridView within the API docs, see [1].
The reason for that is the fact that ensureVisible is a private function.
You should not use this.

The solution you are looking for is:

  - grid.getView().focusRow(recno-1);


Best regards,
Chris



[1] http://docs.sencha.com/ext-js/3-4/#!/api/Ext.grid.GridView
<http://docs.sencha.com/ext-js/3-4/#%21/api/Ext.grid.GridView> 

Am 11.11.2011 08:40, schrieb Brad Spencer: 

List,
 
Dev environment Ext 3.4.0 and OpenLayers 2.9
 
I have built an app that allows a user to select a JSON/KML file from a
server-side directory list and load as a markup layer. The app successfully
display any attributes in an Ext.grid.EditorGridPanel object and I have
instigated GeoExt.grid.FeatureSelectionModel such that the user can select a
map feature and edit any of its attributes inside the grid. All is well
there; however, when the user enters a new geometry feature via an
openlayers OpenLayers.Control.DrawFeature control by digitizing a point,
line or polygon the map is updated just fine and a new row is automatically
added at the bottom of the grid with empty attribute values, as expected.
 
I want the user to know that they must enter attribute values by setting the
focus of the grid on the new record and making sure that the new record is
visible given it will be at the end of a scrolling grid. So what I have done
is added a 'featuresadded' listener of the Openlayers markup layer that
determines the end of the grid and should set the focus to the new row and
then make sure its visible. I have also made sure that
'deferRowRender:false' has been set on the Ext.grid.EditorGridPanel object.
 
The listener looks like the following:
 
// if the grid is present then force new created cell to be visible in grid
if(grid)
{
      var recno = grid.store.data.items.length;      // this gives me the
correct newly added row number    
      grid.getSelectionModel().selectLastRow()       // this sets focus
to the last point in the layer on load only. Aftyer that with each add it
sets the focus on the previous point added not the current new point.
      grid.getView().ensureVisible(recno, 0, true);  // this does not
work. The grid is refreshed to top of grid              
}
 
I am not sure why this is not working and I have tried a lot of other
combinations. Can someone see something wrong or stupid with this?
 
 
Cheers, Brad....
 
 
 
_______________________________________________
Users mailing list
Users@geoext.org
http://www.geoext.org/cgi-bin/mailman/listinfo/users
_______________________________________________
Users mailing list
Users@geoext.org
http://www.geoext.org/cgi-bin/mailman/listinfo/users

Reply via email to