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

问题描述 投票:2回答:3

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

是否可以在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填充。我只想在页面加载时设置初始值。

asp.net session drop-down-menu session-variables sqldatasource
3个回答
1
投票

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

<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
投票

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

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


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"];
}
© www.soinside.com 2019 - 2024. All rights reserved.