有几篇文章描述了如何做到这一点,但背后是代码:
我正在使用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填充。我只想在页面加载时设置初始值。
答案 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"];
}