如何根据变量设置下拉列表默认值?

时间:2011-03-09 17:59:25

标签: c# asp.net

我有几个页面链接在一起,我想保持下拉选项。我已经看到了使用会话值等方法的许多方法,但我想设置默认值,同时仍然可以选择其他值。

实际上,用户将在第1页上进行选择,然后在第2页上进行选择,他们将使用相同的选择,但也可能希望更改其选择。我的想法是我可以在第1页的SQL中将选择加载到表中,然后在第2页中调用该表并将值设置为变量。那么,我的问题是如何将默认下拉值设置为变量而不是设定值。

我正在使用Visual Studio2010和ASP Webforms使用C#。

非常感谢任何帮助或建议!

5 个答案:

答案 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;

再次感谢!