如何将asp:DropDownList SelectedValue设置为会话变量?

时间:2014-02-07 15:13:19

标签: asp.net session drop-down-menu session-variables sqldatasource

有几篇文章描述了如何做到这一点,但背后是代码:

是否可以在aspx页面上将下拉列表的值设置为会话变量?

我正在使用SqlDataSource来填充下拉列表,因此如果可以避免,则不希望添加代码。

<asp:DropDownList ID="ddl" runat="Server" DataSourceID="sqlDS" DataValueField="ID" DataTextField="TEXT" AppendDataBoundItems="true">
  <asp:ListItem Text="" Value="" Selected="True" />
</asp:DropDownList>

<asp:SqlDataSource ID="sqlDS" runat="Server" SelectCommand="spDS" SelectCommandType="StoredProcedure" />

会话(“ID”)设置为加载时的选定值?


下拉列表已从sqldatasource填充。我只想在页面加载时设置初始值。

3 个答案:

答案 0 :(得分:1)

您需要服务器端代码才能使用会话。以下代码不需要代码隐藏文件,但脚本中的代码将再次在服务器端运行。

<asp:DropDownList ID="ddl" runat="Server" 
   DataSourceID="sqlDS" 
   DataValueField="ID" 
   DataTextField="TEXT" 
   AppendDataBoundItems="true"
   OnSelectedIndexChanged="ddl_SelectedIndexChanged" 
   AutoPostBack="True">
  <asp:ListItem Text="" Value="" Selected="True" />
</asp:DropDownList>

<asp:SqlDataSource ID="sqlDS" runat="Server" 
  SelectCommand="spDS" SelectCommandType="StoredProcedure" />

<script runat="server">
    protected void ddl_SelectedIndexChanged(object sender, EventArgs e)
    {
        Session["SelecteValue"] = ddl.SelectedValue;
    }
</script>

注意:确保DropDownList的AutoPostBack="True"

答案 1 :(得分:1)

不要将代码与标记混合使用。出于多种原因将它们分开是有意义的。所以ASPX只有演示文稿,而CS / VB只是代码逻辑。

当你将你的一方编译/部署到生产时 - 不会有“第二页” - 只剩下ASPX页面。代码将被编译成DLL。

答案 2 :(得分:0)

您需要在下拉列表中更改活动。您是否在使用C#或VB.net进行代码隐藏?

添加到onSelectedIndexChanged =“ddl_OnSelectedIndexChanged”

添加后面的代码:

{这是C#vb类似}

protected void ddl_OnSelectedIndexChanged(Object sender, EventArgs e)
{
    Session["selectedID"] = ddl.selectedValue;
}

加载页面,添加

if (isPostback)
{
    ddl.selectedValue = Session["selectedID"];
}