DataGrid Colum Names

F

Fred Nelson

I have an application in which it would be VERY beneficial if I could obtain
the names of the colums in a datagrid.

For example

dim datagrid1 as new datagrid
datagrid1.datasource = (stored procedure that loads datagrid)
datagrid1.databind()

I am able to obtain the data in the datagrid by its relative number however
I can't figure out how to get the names and in this application they may
change over time.

Any help would be GREATLY appreciated!

Thanks,

Fred
 
W

William Ryan eMVP

If it's bound to a grid, then the grid column should correspond with the
columns in the underlying datatable. As such, you can interrogate the
DataTable's column's collection and just lookup the ColumnName property ie
DataTable.Columns[0].ColumnName;

HTH,

bill
 
F

Fred Nelson

Bill:

Thanks for your reply - it looks like I may get this to work!

I don't understand one thing - in the example that I provided I bound the
data grid to a class library with a stored procedure that loaded it. I'm
unclear how to reference the underlying data table in this example where
datagrid1 contains the data.

DataGrid1.Colums[0].ColumnName is not valid syntax -

Do I need to create a data table from the stored procedure rather than a
data grid - or is there something I'm missing?

Thanks again for your help!

Fred


William Ryan eMVP said:
If it's bound to a grid, then the grid column should correspond with the
columns in the underlying datatable. As such, you can interrogate the
DataTable's column's collection and just lookup the ColumnName property ie
DataTable.Columns[0].ColumnName;

HTH,

bill
Fred Nelson said:
I have an application in which it would be VERY beneficial if I could obtain
the names of the colums in a datagrid.

For example

dim datagrid1 as new datagrid
datagrid1.datasource = (stored procedure that loads datagrid)
datagrid1.databind()

I am able to obtain the data in the datagrid by its relative number however
I can't figure out how to get the names and in this application they may
change over time.

Any help would be GREATLY appreciated!

Thanks,

Fred
 
W

William Ryan eMVP

Fred:

You'll reference the DataTable that you bound the grid to. Whatever it's
name is, reference it. How it got filled (ie Stored Proc) doesn't matter.
Depending on how you called DataAdapter.Fill, you may want to use the
Numeric Index of hte Tables collection ie
myDataSet.Tables[0].Columns[0].ColumnName;

conceptually, focus on hitting the datasource with wahtever you want. The
grid is just the presentation of the underlying data obejct. On the Web,
changes won't necessarily be reflected visibly until a postback occurs, but
on the desktop, as soon as you change the underlying table value
programmatically, the change will be visible in the Grid immediately.

HTH,

Bill
Fred Nelson said:
Bill:

Thanks for your reply - it looks like I may get this to work!

I don't understand one thing - in the example that I provided I bound the
data grid to a class library with a stored procedure that loaded it. I'm
unclear how to reference the underlying data table in this example where
datagrid1 contains the data.

DataGrid1.Colums[0].ColumnName is not valid syntax -

Do I need to create a data table from the stored procedure rather than a
data grid - or is there something I'm missing?

Thanks again for your help!

Fred


William Ryan eMVP said:
If it's bound to a grid, then the grid column should correspond with the
columns in the underlying datatable. As such, you can interrogate the
DataTable's column's collection and just lookup the ColumnName property ie
DataTable.Columns[0].ColumnName;

HTH,

bill
Fred Nelson said:
I have an application in which it would be VERY beneficial if I could obtain
the names of the colums in a datagrid.

For example

dim datagrid1 as new datagrid
datagrid1.datasource = (stored procedure that loads datagrid)
datagrid1.databind()

I am able to obtain the data in the datagrid by its relative number however
I can't figure out how to get the names and in this application they may
change over time.

Any help would be GREATLY appreciated!

Thanks,

Fred
 
F

Fred Nelson

Bill:

Thanks for your quick answer - I really appreciate it!

I am a newby and so I'm confused about the reply that you gave. I have
loaded my datagrid with the following:

dim myproclib as new datafunctions.datalib

dim datagrid1 as new datagrid
datagrid1.datasource = myproclib.getstates
datagrid1.databind()

So I haven't (or I think I haven't) created a data table and then bound the
grid to it. Should I create a datatable from the stored procedure? If I
create one then can I populate it without knowing the column names I will
receive?

Again, thanks for your help!

Fred

William Ryan eMVP said:
Fred:

You'll reference the DataTable that you bound the grid to. Whatever it's
name is, reference it. How it got filled (ie Stored Proc) doesn't matter.
Depending on how you called DataAdapter.Fill, you may want to use the
Numeric Index of hte Tables collection ie
myDataSet.Tables[0].Columns[0].ColumnName;

conceptually, focus on hitting the datasource with wahtever you want. The
grid is just the presentation of the underlying data obejct. On the Web,
changes won't necessarily be reflected visibly until a postback occurs, but
on the desktop, as soon as you change the underlying table value
programmatically, the change will be visible in the Grid immediately.

HTH,

Bill
Fred Nelson said:
Bill:

Thanks for your reply - it looks like I may get this to work!

I don't understand one thing - in the example that I provided I bound the
data grid to a class library with a stored procedure that loaded it. I'm
unclear how to reference the underlying data table in this example where
datagrid1 contains the data.

DataGrid1.Colums[0].ColumnName is not valid syntax -

Do I need to create a data table from the stored procedure rather than a
data grid - or is there something I'm missing?

Thanks again for your help!

Fred


William Ryan eMVP said:
If it's bound to a grid, then the grid column should correspond with the
columns in the underlying datatable. As such, you can interrogate the
DataTable's column's collection and just lookup the ColumnName
property
ie
DataTable.Columns[0].ColumnName;

HTH,

bill
I have an application in which it would be VERY beneficial if I could
obtain
the names of the colums in a datagrid.

For example

dim datagrid1 as new datagrid
datagrid1.datasource = (stored procedure that loads datagrid)
datagrid1.databind()

I am able to obtain the data in the datagrid by its relative number
however
I can't figure out how to get the names and in this application they may
change over time.

Any help would be GREATLY appreciated!

Thanks,

Fred
 
C

Cor Ligthert

Hi Fred,

On the winforms version, you can't bind to a DataReader at all like you can
in ASP.NET which tells you something...

Can it be that your datasource is a datareader?

Than the name of your column can be
Dim William As String = rdr.GetName(0)

(And I wished Bill saw my face when I wrote this and this is the true
situation, however that is between me and him and only fun of course)

And Fred, if this is not clear, feel free to ask further I think we where on
the wrong road.

I hope this helps?

Cor.
 
F

Fred Nelson

Cor:

Thanks for your reply - and patience with me - I'm new to this and it will
be worth it when I learn it!!!!

I'm still lost - the code I'm using is as follows

----
dim myproclib as new datafunctions.datalib

dim datagrid1 as new datagrid
datagrid1.datasource = myproclib.getstates (this is a class lib that
calles a stored procedure)
datagrid1.databind()
-----

So I don't think I'm using a data reader or binding.

So: Given the datagrid - is there any way to get the column names?

If I need to build a data table then I assume there is another step?

Thanks,

Fred
 
C

Cor Ligthert

Hi Fred,

Can you add this to your after that databind
dim datagrid1 as new datagrid
datagrid1.datasource = myproclib.getstates (this is a class lib that
calles a stored procedure)
datagrid1.databind()

Dim a As String = DataGrid1.DataSource.ToString

And than see in the debugger what is the datasource?

Cor
 
F

Fred Nelson

Coor:

There is no .ToString method - I get a crash:

"Cast from type SqlDataReader to Type String is not valid"

Fred
 
C

Cor Ligthert

Hi Fred,

This is weird, I tested it in advance and it did work, however in my
opinion it can be that it shows that your datasource is a datareader and
than you can try my suggestion.

Cor
 
F

Fred Nelson

Cor:

I'm not clear - given my code as follows what exactly am I to do?

dim datagrid1 as new datagrid
datagrid1.datasource = myproclib.getstates
datagrid1.databind()

Thanks again,

Fred
 
C

Cor Ligthert

Hi Fred,

I cannot see what is in this hidden class, however because it is probably a
reader what is given back, you could try

dim datagrid1 as new datagrid
datagrid1.datasource = myproclib.getstates
datagrid1.databind()
Dim Myfirstcolumn As String = myproclib.GetName(0)

However probably it fails and than is because much classbuilders say the
user has nothing to know about the class, and are very strict in that. Than
is the only thing to go back to the one who made that procedure.

Cor
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top