2011-09-10 18 views
0

可以在不使用默認值屬性的情況下在代碼隱藏中對sqldatasource執行插入操作嗎?類似於爲參數提供一些鍵值集合並使用Insert()方法?可以插入使用sqldatasource沒有defaultvalue屬性?

我在問,因爲InsertParameters [x] .DefaultValue似乎在做(理論上當然)別的 - 我想重新定義標記,這是一個解決方法。

你知道一些其他的方式來做到這一點嗎?

+4

做數據庫CRUD操作的「正確方法」是避免這個可怕的SqlDataSource組件,MS爲新手提供了簡單的拖放和配置功能。正確的方法是正確定義存儲過程,參數化的存儲過程,並通過後臺代碼或者從創建的DAL類庫中知道什麼時候以及何時執行。 –

回答

0

您必須使用插入事件,您將在其中形成插入的值。之後,您可以在需要的地方使用Insert()。

0

雖然DefaultValue方法看起來很奇怪,但實際上它會正常工作。其他地方很可能有問題。

你也說過你想改變背後的代碼控制。如果不使用DefaultValue,您將無法直接輸入值。爲了避免該特定屬性,您需要創建該對象並填寫它。

這就是說,你問是否可以使用某種鍵值對來填充插入。你可以做到這一點的方法之一是沿

MyArray myArray = new MyArray(); 
myArray.add("FirstName", "John"); 
myArray.add("LastName", "Smith"); 
myArray.add("Address", "1234 Main St"); 
myArray.add("Phone", "123-456-786"); 

SqlDataSource sqlNames = New SqlDataSource(/* Conn */); 

sqlNames.InsertCommand = "INSERT INTO [names] ([FirstName],[LastName],[Address],[Phone]) VALUES(@Fname, @Lname, @Address, @Phone)"; 
foreach (MyObject o in myArray) { 
    // Assuming an array of MyObject which has two members 
    sqlNames.InsertParameters.Add("@" + o.DBColumnName, o.Value); 
} 

sqlNames.Insert(); 

這是半僞碼線的東西,但是這對你想要做什麼的總體思路。使用HashTable,自定義對象數組等。

隨時尋求更多幫助。

相關問題