我有几个页面链接在一起,我想保持下拉选项。我已经看到了使用会话值等方法的许多方法,但我想设置默认值,同时仍然可以选择其他值。
实际上,用户将在第1页上进行选择,然后在第2页上进行选择,他们将使用相同的选择,但也可能希望更改其选择。我的想法是我可以在第1页的SQL中将选择加载到表中,然后在第2页中调用该表并将值设置为变量。那么,我的问题是如何将默认下拉值设置为变量而不是设定值。
我正在使用Visual Studio2010和ASP Webforms使用C#。
非常感谢任何帮助或建议!
答案 0 :(得分:1)
我当然不会使用表格。您使用会话的第一个猜测可能是正确的。您似乎无法更改会话值,但是......
您的网页应该像您一样工作:
让用户选择第1页上的项目,然后将这些值存储在会话中。 然后在第2页上,将会话中的值设置为下拉列表中的默认值。如果他们更改了他们的选择,只需将会话变量更新为新值。 然后你可以无限重复。
编辑: 实施例中,
设置会话变量:
Session["DropDownValue1"] = DropDownList1.SelectedIndex;
设置DropDown的默认值:
DropDownList1.SelectedIndex = (int?)Session["DropDownValue1"] ?? 0;
第二个示例中的??
是空合并运算符。这意味着如果它之前的对象为null,那么改为使用它之后的东西。
您将在代码隐藏文件*.cs
然后,如果您愿意,可以在第二页上更新OnSelectedIndexChanged事件以更新您的会话变量。
将此属性添加到*.aspx
文件中的DropDownList:
OnSelectedIndexChanged="Index_Changed"
使用代码隐藏*.cs
文件中的事件处理程序代码:
void Index_Changed(Object sender, EventArgs e) {
Session["DropDownValue1"] = DropDownList1.SelectedIndex;
}
答案 1 :(得分:0)
数据库可以使用,但您也可以使用Cookie或会话。您需要做的是在下拉列表selectionchanged事件中,将这些值保存到Session中(例如)。然后当第二页的page_load事件触发时,读取那些会话值。
对于下拉列表,您可以从对象或常量/值设置所选值。
string myVal = Session["listChoice"];
lstChoices.SelectedValue = myVal;
答案 2 :(得分:0)
如果您希望仅保留Session
的字词,则可以将其存储为Session
。如果您希望它持续更长时间,您可以使用cookie,或者您需要将其存储在数据库中。
首次加载DropDownList
时,只需检查是否应通过查找存储的默认值来默认值:
// Initialize the DDL then check for the default value
if (Session["DDL1Default"] != null)
{
ddl1.SelectedValue = Session["DDL1Default"].ToString();
}
当用户选择一个值然后导航时,您应该存储它:
// in some navigate event
Session["DDL1Default"] = ddl1.SelectedValue;
答案 3 :(得分:0)
您仍然可以使用会话变量
在Page_Load
中,设置下拉列表的SelectedValue
:
myDropDownList.SelectedValue = Session["myDropDownValue"].ToString();
的修改
当然。只需更新myDropDownList_OnSelectedChange()
事件处理程序中的变量即可。您需要确保将Page_Load
中{1}}中第1页的值设置的其他代码放在if(!IsPostBack)
中,以防止下拉列表无法更新。
答案 4 :(得分:0)
谢谢大家!它现在正在运作。如果有其他人碰到这个,这就是我最终的结果:
第1页和Page 2 CodeBehind in Page_Load部分:
if (!Page.IsPostBack) {
if (Session["PAG"] != null) {
DdlPAG.SelectedValue = Session["PAG"].ToString(); } }
Session["PAG"] = DdlPAG.SelectedValue;
再次感谢!