Avoid hardcoding DataKeyField property of DataGrid...

  • Thread starter Thread starter Jeff Robichaud
  • Start date Start date
J

Jeff Robichaud

Hi,

How can I avoid hardcoding the name of the DataKeyField property of a
DataGrid ?

Like:

datagrid.DataSource = someSource;
datagrid.DataKeyField = "employeeId";

The above works but it's not what I want, because whenever the name of the
field changes, I'm screwed. Avoiding this is the purpose of strongly-typed
datasets (or using collections or whatever data layer abstraction mechanism
you like) as I understand it, but I'd like to know what you n-tier gurus do
in this case ?

Thanks,
- Jeff
 
I am not sure I understand. When you build a particular page, you usually
have certain data in mind. Are you constantly changing database schema names
or do you just want a generic implementation?

One potential method is to set up the grid on a control (user control is
fine) and have properties for the dynamic bits, which can inclue the
DataKeyField property. Or, if you want to be more clever, you an make sure
you set the primary key field for your strongly typed datasets and query
which field is the primary key to set the DataKeyField property.

--
Gregory A. Beamer
MVP; MCP: +I, SE, SD, DBA

*************************************************
Think Outside the Box!
*************************************************
 
hmm....not quite sure why you'd want to do this.....but here ya go....

In your code-behind, create a GetKeyName function that takes a datatable and
returns a string that represents the column name contained in the
datatable's PrimaryKey property.
Then you can set your DataKey field's value to:

DataKeyField="<%# GetKeyName() %>"
 
Back
Top