2009-06-21 28 views
0


如果的DataKeyNames設置爲不定義爲一個主鍵,然後場...

1)我注意到,如果我設置GridView.DataKeyNames到現場,實際上沒有被定義爲在主鍵數據源,數據源控件(或者也許是GridView?)將以某種方式知道在DataKeyNames中設置的字段不是真正的主鍵。我開始意識到這個事實,當我打開配置Select語句窗口(通過GridView的智能任務彈出 - >配置數據源 - >配置Select語句窗口 - >高級)和窗口有兩個單選按鈕禁用。

a)那麼Asp.Net是如何「弄清楚」的,在DataKeyNames中設置的字段實際上並不是主鍵?


B)另外,應該不是達到程序員設定的DataKeyNames到她選擇的任何領域,即使那場沒有被定義爲在數據源主鍵?


感謝名單

回答

1

好,DataKeyNames屬性的目的是爲了唯一標識您的數據集中的每一個數據行。爲此,ASP.NET需要100%確定它確實是您提供的唯一標識列(或列集),唯一可以真正檢查的列是表的主鍵 - 這將始終是唯一標識一行(這就是主鍵的定義)。

我想這就是ASP.NET堅持DataKeyNames的主鍵的原因 - 任何其他列(或一組列)不能真正被檢查有效性 - 所以最好是拒絕它們而不是運行到如果它不是一個唯一標識關鍵問題.....

馬克

+0

我還問:A)我認爲Asp.Net只能檢查是否使用領域SqlDataSource控件時,真正的唯一標識一行?但是,在使用ObjectDataSource控件時,Asp.Net是否也可以檢查唯一性? B)我假設Asp.Net「問」Sql服務器域是否真的是主鍵?使用SQL數據源,或ADO.NET數據集時 – SourceC 2009-06-22 20:11:01

相關問題