2009-02-12 59 views
1

我搜索了幾天,但沒有找到解決方案。所以這是我的場景:在GridView中使用DropDownList的值插入新條目

我有一個DataBindung到數據庫和DefaultMode設置爲「插入」作爲一個新的數據庫條目的輸入形式的DetailView。此DetailsView中的一個字段是帶有包含DropDownList的InsertItemTemplate的TemplateField。此DropDownList也與另一個SqlDataSource有界,使用select參數「UserID」爲實際登錄用戶獲取數據庫的所有行。這些行顯示在我的DropDownList中,當我在瀏覽器中查看源代碼時,我看到正確的「選項」 - 在所有那些漂亮的db-id中都有對應的值。所以這一切都很好。

現在我按下我的插入按鈕將我的數據發送回服務器。但是,當試圖從DetailsView1_ItemInserting()中的DropDownList中使用以下代碼獲取選定值時,我會得到一個空值。

var list = (DropDownList)DetailsView1.Rows[0].FindControl("DropDownList1"); 
InsertEntryDataSource.InsertParameters["DropDownList1Value"].DefaultValue = list.Items[list.SelectedIndex].Value; 

相同的代碼與我在此項目中創建的另一個表單一起工作。唯一的區別是,另一個DropDownList綁定到一個DataSource,而沒有必須在運行時設置的選擇參數(當前登錄的用戶ID)。

我的恢復是DropDownList的是回傳後空,因爲數據綁定還沒有完成。因此,我爲SqlDataSource設置了select-parameter,我的DropDownList被限制在DetailsView1_ItemInserting()中 - 現在上面的代碼獲得了我的價值。

:我只是測試形式的另一種時間,我確定,不管我選擇在我的DropDownList哪個條目,我得到第一入境總是價值!整個過程似乎清除我DropDownList的SelectedIndex - 所以現在我有一個值插入而不是null,但它是錯誤的。 :-(

所以我的問題:我如何可以訪問DetailsView1_ItemInserting我的DropDownList的選定值(),將其保存到數據庫中預先

感謝, Anheledir

回答

2

你可以使用這個語法,而無需編寫代碼來訪問DDL:

<InsertParameters> 
<asp:ControlParameter ControlID="DetailsView1$DropDownList1" Name="DropDownList1" PropertyName="SelectedValue" Type="String" /> 
</InsertParameters> 

或從DataSource_Inserting事件,而不是DetailsView_ItemInserting事件u能做到這一點:

e.InputParameters["InputParameterFieldName"] = ((DropDownList)DetailsView1.FindControl("DropDownList1")).SelectedValue; 

祝您好運!

0

你曾經插入?我想要備份一個步驟,並問爲什麼你需要將插入作爲GridView本身的一部分,而不是它自己的UI部分(有一些輸入控件和一個提交按鈕),空間分隔強調了功能的分離 - 一個插入部分,一個部分用於報告/顯示,你使用的方法聽起來像是一個很少的獎勵的奮鬥

相關問題