【问题标题】:dropdownlist taking another's value下拉列表取另一个值
【发布时间】:2012-03-26 12:56:15
【问题描述】:

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

在页面加载时,我让它选择 request.querystring 的值。调试时它采用选定的值,直到它到达下一行,然后它采用它的选定值?

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 以确保它没有继承一些愚蠢的东西,但一切似乎都是正确的。

提前为帮助喝彩。

【问题讨论】:

  • public static bool IsNothing(string stringToTest) { return string.IsNullOrEmpty(stringToTest); }
  • 你能提供一些你的代码吗?指向您的本地主机的链接对我们没有帮助。
  • 本地主机链接只是为了显示我从中提取的查询字符串。不确定是否需要更多代码,因为在调试 ddlMin 时,该值直到下一行,然后丢失它。您还需要查看哪些其他代码?
  • 现在你提供的代码 sn-p 更清楚了。尝试强制 ddlMin 状态并使用 ddlMin.DataBind();在设置 selectedValue 之后。
  • 不幸的是,这也没有做任何事情。我已经在 .Net 代码中开发超过 8 年了,以前从未见过这样的东西。当您说强制状态时,您是什么意思?就像我之前说的那样,我添加了 ddlMin.DataBind();但仍然在 ddlMax.selectedValue 更改它失去了它的价值?

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


【解决方案1】:

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

            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 时选择它,它也会在两者中选择相同的列表项......为了纠正这个问题,您只需将添加到 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);
            }

烦人,但显然很明显

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-30
    相关资源
    最近更新 更多