為什麼使用SQLDataSource無法設定Insert、Update、Delete陳述式

當進階SQL產生選項無法啟用時該如何解決,本文將提供可能的解決方式。

當您使用SQLDataSource作為存取SQL Server的資料來源時,可以透過設定來源精靈來設定擷取資料是要透過自訂的T-SQL陳述式、Stored Procedure或直接指定資料表或檢視(如下圖),此外我們也可以利用進階按鈕來設定Insert、Update、Delete陳述式(下圖紅色框框)。

image

 

當您點選進階按鈕開啟進階SQL產生選項時,可能發現產生Insert、Update、Delete陳述式以及使用開放式並行存取的按鈕都被disabled。

image

 

造成這個問題的原因在於SELECT陳述式所查詢的資料表沒有設定Primary Key(如下圖),導致SQLDataSource無法判斷刪除和更新該以哪個欄位為WHERE條件。

image

 

解決方式很簡單,只需把資料表設定Primary Key(如下圖左)後重新再開啟進階SQL產生選項,即可以設定產生Insert、Update、Delete陳述式

imageimage