2014-03-24 184 views
0

我試圖使用被保存到會話變量的值設置的Page_Load一個的DropDownList選定值值在pageLoad的設置DDL的的SelectedValue。 DropDownList已被填充,並將值與會話中的其他信息一起存儲。我正在創建一個編輯條目頁面,並希望所有的字段都已填充會話的信息。使用保存在會話變量

我所做的是填充文本框會議變量,但對顧問部分我需要用戶輸入一個數字,而不是一個名字。所以我需要使用DropDownList以確保信息輸入準確。我已經研究了數據綁定,數據綁定,使用數據源等的方法,但似乎所有這些DropDownLists都是動態生成的。任何幫助將非常感激。

我的.aspx代碼:

<asp:TextBox runat="server" ID="fname" MaxLength="100"></asp:TextBox> 

<asp:DropDownList ID="advisors" runat="server"> 
       <asp:ListItem Value="">Select Advisor</asp:ListItem> 
       <asp:ListItem Value="2">Joe Schmo</asp:ListItem> 
</asp:DropDownList> 

代碼背後:

protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!IsPostBack) 
      { 
       fname.Text = Session["fname"].ToString(); 
       lname.Text = Session["lname"].ToString(); 
       sex.Text = Session["sex"].ToString(); 
       sid.Text = Session["sid"].ToString(); 
       email.Text = Session["email"].ToString(); 
       phone.Text = Session["phone"].ToString(); 
       advisors.SelectedValue = Session["advisor"].ToString(); 
      } 

     } 

UPDATE:

所以我很愚蠢的。 Session變量存儲名稱「Joe Schmo」而不是值「2」。以下代碼適用於我。

foreach (ListItem listItem in advisors.Items) 
{ 
    listItem.Selected = listItem.Text.Equals(Session["advisor"].ToString()); 
} 
+1

你肯定會話[「顧問」。toString()方法正確設置,並返回一個匹配列表項值的值?也許嘗試硬編碼像顧問.SelectedValue =「2」;或advisors.SelectedIndex = 1;只是爲了看看它是如何工作的。 – dave823

+1

@ dave823我是個白癡。感謝你提出這個問題,Session [「顧問」]返回的名字不是價值。所以當然這是行不通的。我現在覺得很愚蠢。謝謝 – Jobokai

回答

0

試試這個

foreach (ListItem listItem in advisors.Items) 
{ 
     if(listItem.Text.Equals(Session["advisor"].ToString()) 

DropDownList1.Items.FindByValue(Session["advisor"].ToString()).Selected = true; 
} 
+0

listItem.Selected = listItem.Text.Equals(Session [「advisor」]。ToString());這是一個更清潔的書寫方式。 – Jobokai