выпадающий список, принимающий чужое значение - PullRequest
0 голосов
/ 26 марта 2012

У меня есть два раскрывающихся списка на моей странице, 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, чтобы убедиться, что он не наследовал что-то глупое, но все кажется правильным.

Приветствия за помощь заранее.

1 Ответ

0 голосов
/ 27 марта 2012

При создании выпадающего списка я создавал свои элементы примерно так:

            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);
            }

Раздражает, но обязательно, видимо

...