您可以从另一个页面链接到选项下拉框中的特定值吗?
换句话说,假设我在第1页,我想锚定链接到第2页,该页有一个包含3个不同值的选项下拉框。假设默认情况下,当您转到第2页时,下拉选项框显示值1。
是否可以链接到第2页并动态更改该选项框的值?而当您单击第1页上的链接时,它将自动显示值3,而不是第2页上的值1。
发布于 2009-05-18 04:07:16
这当然是可能的。您可以在查询字符串中传递一个标志。因此,在page1上,你有一个类似于"page2.aspx?option=3“的page2链接。然后,在第2页的PageLoad
方法中,只需从查询字符串(Request.QueryString["option"]
)中读取该值,并适当地设置DropDownList
的选定项。
一个page1你会有...
<a href="page2.aspx?option=3">link to page 2</a>
在page2的代码背后,基于Al的例子...
void Page_Load(object sender, EventArgs e) {
if (!Page.IsPostBack) {
int option;
if(int.TryParse(Request.QueryString["option"], out option) { //Only set the value if it is actually an integer
ddlList.SelectedIndex = option;
}
}
}
发布于 2009-05-18 04:33:38
乔恩·弗里兰的回答基本上就是我要做的。您可能希望将用于设置列表索引的代码放在Page_Load函数的code类中。
您也可以在ASP.Net会话中保存要设置的选项的值,但如果您开始让用户在站点上来回跳跃,这就会变得有点棘手。他们可能会返回到第2页,并且仍然会将会话变量设置为某些意外的值。此外,如果用户在一段时间内处于非活动状态,或者如果服务器被重置,则可能会遇到删除会话的问题。从好的方面来说,如果把它放在会话对象中,就可以在页面之间来回移动,并将所需的所有数据放在手边。
如果您想要查看示例,请尝试如下所示:
void Page_Load (object sender, EventArgs e) {
if (! Page.IsPostBack) {
ddlList.SelectedIndex = Request.QueryString["option"]
}
您希望将代码放在!IsPostBack部分中,以便它只在用户第一次被定向到页面时运行。
https://stackoverflow.com/questions/876207
复制相似问题