使用会话变量中保存的值在页面加载上设置DDL的选定值

时间:2014-03-24 14:33:40

标签: c# asp.net session pageload

我正在尝试使用保存到会话中的值在 Page_Load 上设置 DropDownList 选定值 变量。已填充 DropDownList ,并将值与会话中的其他信息一起存储。我正在创建一个编辑条目页面,并希望所有字段都填充了会话中的信息。

我所做的是使用会话变量填充 TextBox ,但对于Advisors部分,我需要用户输入数字而不是名称。所以我需要使用 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();
            }

        }

更新:

所以我很蠢。 Session变量存储名称“Joe Schmo”而不是值“2”。以下代码对我有用。

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

1 个答案:

答案 0 :(得分:0)

试试这个

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

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