下拉列表取另一个值

时间:2012-03-26 12:56:16

标签: c# asp.net drop-down-menu query-string

我的页面上有两个下拉列表,ddlMin和ddlMax。

在页面加载时,我选择request.querystring的值。在调试时,它会获取所选的值,直到它到达下一行,然后获取IT的选定值?

http://localhost:37661/Default.aspx?search=&min=450000

ddlMin.SelectedValue = !FpsFunctions.IsNothing(Request.QueryString["min"]) 
    ? Request.QueryString["min"] 
    : "0"; <-- at this point it's 450000

ddlMax.SelectedValue = !FpsFunctions.IsNothing(Request.QueryString["max"])
    ? Request.QueryString["max"] 
    : "0"; <-- after this ddlMin.SelecgtedValue changes back to 0

我已经检查了.cs.designer以确保它没有继承愚蠢的东西,但一切看起来都是正确的。

提前帮助干杯。

1 个答案:

答案 0 :(得分:0)

在创建我的下拉列表时,我正在创建我的项目

            foreach (string item in ConfigurationManager.AppSettings["Budget"].Split(','))
            {
                items = item.ToLower() == "any"
                            ? new ListItem(item, "0")
                            : item.Contains("+")
                                  ? new ListItem(String.Format("{0:0,0}+", Convert.ToInt32(item.Replace("+", ""))),
                                                 "999999999")
                                  : new ListItem(String.Format("{0:0,0}", Convert.ToInt32(item)), item);
                ddlMin.Items.Add(items);
                ddlMax.Items.Add(items);
            }

这意味着什么,虽然我不清楚为什么它有这么大的影响,但是这个列表项作为一个单一的项目被附加到两个下拉列表中。因此,即使ddlMin获得正确的值并在ddlMax返回为0时选择它,它也会在两者中选择相同的listitem ...为了纠正这个问题,你需要将添加到ddlMin和ddlMax分开。

            foreach (string item in ConfigurationManager.AppSettings["Budget"].Split(','))
            {
                items = item.ToLower() == "any"
                            ? new ListItem(item, "0")
                            : item.Contains("+")
                                  ? new ListItem(String.Format("{0:0,0}+", Convert.ToInt32(item.Replace("+", ""))),
                                                 "999999999")
                                  : new ListItem(String.Format("{0:0,0}", Convert.ToInt32(item)), item);
                ddlMin.Items.Add(items);
            }


            foreach (string item in ConfigurationManager.AppSettings["Budget"].Split(','))
            {
                items = item.ToLower() == "any"
                            ? new ListItem(item, "0")
                            : item.Contains("+")
                                  ? new ListItem(String.Format("{0:0,0}+", Convert.ToInt32(item.Replace("+", ""))),
                                                 "999999999")
                                  : new ListItem(String.Format("{0:0,0}", Convert.ToInt32(item)), item);

                ddlMax.Items.Add(items);
            }

恼人但显然必然