簡體   English   中英

在插入新條目時使用 GridView 中的 DropDownList 的值

[英]Using the value of a DropDownList in a GridView on inserting a new entry

我現在搜索了幾天,但沒有找到解決方案。 所以這是我的場景:

我有一個帶有 DataBindung 的 DetailView 到數據庫和 DefaultMode 設置為“插入”作為新數據庫條目的輸入表單。 此 DetailsView 中的一個字段是具有包含 DropDownList 的 InsertItemTemplate 的 TemplateField。 此 DropDownList 還綁定到另一個 SqlDataSource,使用選擇參數“UserID”為實際登錄用戶獲取數據庫的所有行。 這些行顯示在我的 DropDownList 中,在我的瀏覽器中查看源代碼時,我看到了正確的“選項”-屬性,所有這些漂亮的 db-ID 都在其相應的值中。 所以到目前為止一切都很好。

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

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

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

我的結論是,回發后 DropDownList 為空,因為數據綁定尚未完成。 所以我在 DetailsView1_ItemInserting() 中為我的 DropDownList 綁定到的 SqlDataSource 設置了選擇參數 - 現在上面的行得到了我的值。

但是:我剛剛又測試了一次表單,我確定,無論我在 DropDownList 中選擇哪個條目,我總是得到第一個條目的值! 整個過程似乎清除了 DropDownList 的 SelectedIndex - 所以現在我有一個值要插入而不是 null,但它是錯誤的。 :-(

所以我的問題是:如何在 DetailsView1_ItemInserting() 中訪問我的 DropDownList 的選定值以將其保存到數據庫中?

提前致謝, Anheledir

您可以使用此語法訪問 ddl,而無需編寫代碼:

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

或者從 DataSource_Inserting 事件而不是 DetailsView_ItemInserting 事件你可以這樣做:

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

祝你好運!

您是否曾經一次插入不止一行數據? 我想備份一個步驟並詢問為什么您需要將插入作為 GridView 本身的一部分而不是它自己的 UI 部分(帶有一些輸入控件和提交按鈕)。 空間的分離強調功能的分離——一部分用於插入,一部分用於報告/展示。 您使用的方法聽起來像是為了獲得很少的回報而進行的大量斗爭。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM