2012-02-06 60 views
0

我有一個硬編碼值的下拉列表:綁定下拉用硬編碼值

<asp:DropDownList ID="BulletinTypeDropDown" runat="server"> 
    <asp:ListItem Selected="True" Text="--Select--" Value="--Select--"></asp:ListItem> 
    <asp:ListItem Text="News" Value="News"></asp:ListItem> 
    <asp:ListItem Text="report" Value="report"></asp:ListItem> 
    <asp:ListItem Text="System" Value="System"></asp:ListItem> 
    <asp:ListItem Text="Reminder" Value="Reminder"></asp:ListItem> 
</asp:DropDownList> 

我想用它來從數據庫插入和編輯值。例如,在添加記錄時,用戶選擇「報告」並將「報告」插入到數據庫中。然後,如果用戶由於db中的值爲'report'而去編輯頁面,那麼下拉列表必須顯示'report'被選中。 但我能夠成功將值存儲在數據庫中,但在編輯頁面中我無法檢索所選頁面。 我正在使用實體框架工作,所以,我厭倦了很多方式,但無法獲得編輯頁面中的值。 這是我試過的方式。

DropDown.SelectedValue = bulList.intype.ToString(); // intype是我從數據庫中獲取的值,它返回的是正確的值,但在DropDown.selectedvalue中傳遞null。

有人可以請幫我什麼是我可以工作,以獲得我的下拉列表中的值的其他方式。

感謝

+0

您在頁面生命週期的哪個事件處理程序中嘗試設置下拉列表值(Page_load,Button_click)?編輯頁面如何獲得該值?當你顯示更多的代碼時,它更容易。 – 2012-02-06 21:15:49

+0

我試圖展現在page_load.I的下拉列表剛剛硬編碼的值,並在下拉列表並在後面的代碼我累了我只是做如下,如果(bulletinList.Bulletintype!= NULL){ BulletinTypeDropDown.SelectedValue = bulletinList.Bulletintype;} – user1098449 2012-02-06 21:18:15

+0

你什麼時候從數據庫設置讀取值?也許你的下拉菜單在設置SelectedValue時沒有硬編碼的Items?在設置了SelectedValue的行上中斷並檢查Items.Length。 – 2012-02-06 21:19:45

回答

0

你必須找到在下拉列表的文本,設置所選屬性爲true 例:

//pass the string you want to set selected to true --> assuming in your case bulList.intype.ToString() 
BulletinTypeDropDown.Items.FindByText(bulList.intype.ToString()).Selected = true; 

您還可以通過使用FindByValue相似。點擊此處瞭解詳情:http://forums.asp.net/t/1004541.aspx/1

+0

我甚至試過這個,但它拋出一個錯誤,說沒有設置對象實例的對象引用。 – user1098449 2012-02-06 20:41:44

+0

檢查bulList.intype.ToString()是一些不爲null的文本,它的值與您的DropDown列表中的項目相匹配。 – antar 2012-02-06 20:50:06

+0

bulList.intype.ToString()傳遞數據庫中的確切值,但Dropdownlist始終傳遞--select--。 – user1098449 2012-02-06 21:11:18

0
BulletinTypeDropDown.SelectedValue = valueFromDb; 
+0

我做了同樣的事情,但VlauefromDb給我從Db的價值,但BulletinTypeDropdown.selectedvalue不是從DB中分配值,它總是顯示--select--值。 – user1098449 2012-02-06 21:13:33

+0

我的猜測是''DropDownList1_Load'正在從數據庫中分配'SelectedValue'後被調用。設置一些斷點並驗證。 – Danny 2012-02-07 18:13:40

0

所以下拉列表停留在默認值,如果有可能找到頁面加載內部代碼中的綁定方法。
否則,如果bulList.intype正在返回值,我認爲dropdownlist拒絕顯示選定的值是沒有辦法的。可能會檢查空間的返回值。試試這個:

string s = = bulList.intype.ToString().Trim(); 
DropDown.SelectedValue = s; 
+0

不幸的是,我試圖通過分配修剪(),但它仍然顯示我一樣之前。字符串S顯示我正確的價值,但是當涉及到DropDown.SelectedValue仍然顯示我爲 - 選擇 - – user1098449 2012-02-06 21:27:55

+0

是你在你的代碼中調用DataBind()方法? – Mubarek 2012-02-06 21:32:05

+0

不,我不使用數據綁定 – user1098449 2012-02-06 21:35:07

0

這裏是靈魂,可能適合你。 所以創建你的下拉列表。

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true" 
     onload="DropDownList1_Load" > 
    </asp:DropDownList> 


protected void DropDownList1_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     List<string> DDLlist = new List<string>(); 
     DDLlist.Add("Report"); 
     DDLlist.Add("News"); 
     DropDownList1.DataSource = DDLlist; 
     DropDownList1.SelectedValue = "Report"; 
     DropDownList1.DataBind(); 
    } 

您可以添加到DDLlist以動態添加新項目。

+0

我試過這個,我得到了我想要的,但問題是在下拉列表中我看到所有的值分配給所有的值id's.but但我只想在dropdownlist不同的項目。 – user1098449 2012-02-07 16:35:04

+0

你能給我更多關於你想要出現在列表中的細節嗎? – Ches 2012-02-07 21:48:48

+0

感謝您的幫助,但現在就開始工作。 – user1098449 2012-02-07 22:08:56