We use cookies to give you the best experience on our website. If you continue to browse, then you agree to our privacy policy and cookie policy.
Unfortunately, activation email could not send to your email. Please try again.

Locating a column

Thread ID:

Created:

Updated:

Platform:

Replies:

1757 Nov 22,2002 01:32 PM Dec 2,2002 05:11 PM Windows Forms 5
loading
Tags: GridControl
Ivan Pelly
Asked On November 22, 2002 01:32 PM

How can I, given a column name or index, determine where it appears in the grid? (e.g. If my datatable columns are name, address, city, state, zip, I want to know that zip is the fifth column, unless of course I, or the user, moved it). Thanks

Administrator [Syncfusion]
Replied On November 22, 2002 03:39 PM

See GridDataBoundGrid.Binder.NameToField and NameToColIndex. Stefan

Ivan Pelly
Replied On November 25, 2002 07:26 AM

Is NameToColIndex going to return the physical order of the column, or just a numeric index to the column?

Administrator [Syncfusion]
Replied On November 25, 2002 08:42 AM

I am not sure I understand the difference between "physical order of the column" and "numeric index to the column". By physical order, do you mean the order of the column in the datatable and not its order in the grid? NameToField looks for the column in the GridBoundColumns (or InternalColumns) which has the same MappingName as the passed value. It returns a value based on the index of this column in the GridBoundColumns (or InternalColumns). This reflects the position of the column in the GridDataBoundGrid. So, if a 1 is returned, the column is the left-most column of the grid, and 2 would be the next column, and so. So, if the column whose mappingname is Company is moved from gridcolumn 1 to gridcolumn 5, then NameToField("Company") would change from returning 1 to returning 5.

Ivan Pelly
Replied On December 2, 2002 01:35 PM

I was operating under the assumption that a column's index would be an immutable handle to that column, regardless of its physical position within the grid - apparantly this is not so. Would it be true then that the only reliable way to get a reference to a column, regardless of its original or current position, is via the column name? It seems that GridDataBoundGrid1.GridBoundColumns is a zero-based collection, but if you take the name you get from GridDataBoundGrid1.GridBoundColumns.Item(X).MappingName, and feed it into GridDataBoundGrid1.Model.NameToColIndex(s), you don't get back X, but X + 1, so NameToColIndex is one-based? Either way, it looks like both GridDataBoundGrid1.GridBoundColumns.Item() and NameToColIndex return numbers that are related to the physical location of the column, albeit if one of them is off by one...

Administrator [Syncfusion]
Replied On December 2, 2002 05:11 PM

There are two collections of 'columns' in a GridDataBoundGrid. One is the GridDataBoundGrid.GridBoundColumns (or an equivalent collection, GridDataBoundGrid.Binder.InternalColumns). This collection is indexed zero-based as it is an array of columns bound to the datasource. The other 'columns' collection is the GridDataBoundGrid.Model.Cols collection (and other Model collections). This collection is 'essentially' one-based as column zero in this collection is the row header column. Since the row header column is not reflected in the first column collection (GridBoundColumns), but is relected in the second collection, this is why the first collection is zero based and the second collection is one-based. If you physically moved the columns, then both these collections will be changed to reflect this move. So, you cannot rely on the index of a column in either of these collections to be the same as the index into the unmoved datasource (DataTable). So, if you need to get at a particular column in the underlying DataTable, you would want to use the name as the index.

CONFIRMATION

This post will be permanently deleted. Are you sure you want to continue?

Sorry, An error occured while processing your request. Please try again later.

You are using an outdated version of Internet Explorer that may not display all features of this and other websites. Upgrade to Internet Explorer 8 or newer for a better experience.

;