如果DataKeyNames设置为未定义为主键的字段,则...

时间:2009-06-21 19:10:10

标签: c# asp.net data-binding gridview


1)我注意到如果我将 GridView.DataKeyNames 设置为实际上未在数据源中定义为主键的字段,那么数据源控件(或者GridView?)会以某种方式知道 DataKeyNames 中设置的字段实际上不是主键。当我打开配置选择语句窗口(通过 GridView的智能任务弹出窗口 - >配置数据源 - >配置选择语句窗口 - >时,我意识到了这一事实;高级)和窗口禁用了两个单选按钮。

a)那么Asp.Net如何“弄明白” DataKeyNames 中设置的字段实际上不是主键?


b)此外,编程人员是否应该将 DataKeyNames 设置为她选择的任何字段,即使该字段未在数据源中定义为主键?


感谢名单

1 个答案:

答案 0 :(得分:1)

嗯,DataKeyNames属性的目的是唯一标识数据集中的每个数据行。为此,ASP.NET需要100%确定它确实是您提供的唯一标识列(或列集),并且唯一可以真正检查的是表的主键 - 这将始终是唯一标识一行(这是主键的定义)。

我猜这就是ASP.NET坚持使用DataKeyNames主键的原因 - 任何其他列(或列集)都无法真正检查其有效性 - 因此最好拒绝它们而不是运行到问题,如果它不是一个唯一的识别键.....

马克