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

Re: Avoid hardcoding DataKeyField property of DataGrid... by Cowboy

Cowboy
Wed Aug 23 08:08:54 CDT 2006

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!
*************************************************
"Jeff Robichaud" <jfrobichaud@gmail.com> wrote in message
news:OdGQbLrxGHA.3500@TK2MSFTNGP02.phx.gbl...
> 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
>
>
>



RE: Avoid hardcoding DataKeyField property of DataGrid... by DavidJessee

DavidJessee
Wed Aug 23 09:58:02 CDT 2006

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() %>"

"Jeff Robichaud" wrote:

> 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
>
>
>
>