Search code examples
asp.netsessiondrop-down-menusession-variablessqldatasource

How to set a asp:DropDownList SelectedValue to a Session Variable?


There are several articles describing how to do this is code behind however:

Is it possible to set the value of a dropdownlist to a session variable on the aspx page?

I am using SqlDataSource to populate the dropdownlist so do not wish to add code behind if it can be avoided.

<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" />

Set Session("ID") as selected value on load?


The dropdown list is already populated from the sqldatasource. I just want to set the initial value on page load.


Solution

  • You need a server side code in order to use Session. The following code doesn't requires code behind file, but again the code inside script will run at server side.

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

    Note: Make sure AutoPostBack="True" for DropDownList.