Выпадающее меню Выбранное значение Задача - PullRequest
3 голосов
/ 30 июня 2011
 drpDwnLstBillContact.SelectedValue = billContactId.ToString();
 drpDwnLstRegContact.SelectedValue = regContactId.ToString();
 drpDwnLstTechContact.SelectedValue = techContactId.ToString();

Привет, ребята, я пытаюсь установить свойство selectedvalue раскрывающихся списков, но у меня есть проблема.

Значения переменных:

billContactId=786867;
regContactId=3487347;
techContactId=37463;

Проблема заключается впервая строка billContactId присваивается свойству selectedvalue объекта drpDwnLstBillContact также во второй строке regContactId присваивается свойству selectedvalue drpDwnLstRegContact.Но когда ему присваивается первое выбранное значение (drpDwnLstBillContact), также устанавливается значение regContactId.Я запутался, почему эта вторая строка кода влияет на первую строку?

Ответы [ 4 ]

3 голосов
/ 30 июня 2011

Я нашел проблему и решение.

В методе FillDropDowns я создал только один элемент ListItem и добавил его к каждому раскрывающемуся списку, поэтому при изменении свойства selectedvalue для раскрывающихся списков изменяется элемент списка, а также изменяется элемент списка всех раскрывающихся списков. Теперь я создал отдельные объекты ListItem для каждого выпадающего списка, и проблема решена.

Старый код

 foreach (string[] contactData in data)
        {
            ListItem li = new ListItem(contactData[0], contactData[1]);

            drpDwnLstRegContact.Items.Add(li);
            drpDwnLstTechContact.Items.Add(li);
            drpDwnLstBillContact.Items.Add(li);
        }

Новый код

 foreach (string[] contactData in data)
        {
            ListItem li = new ListItem(contactData[0], contactData[1]);
            ListItem li1 = new ListItem(contactData[0], contactData[1]);
            ListItem li2 = new ListItem(contactData[0], contactData[1]);
            drpDwnLstRegContact.Items.Add(li);
            drpDwnLstTechContact.Items.Add(li1);
            drpDwnLstBillContact.Items.Add(li2);
        }
2 голосов
/ 30 июня 2011

Это не повлияет на первое; выпадающие списки являются атомарными, и я никогда не слышал об этой проблеме раньше. Вы уверены, что где-то еще в коде элемент управления не переназначается на другое значение?

1 голос
/ 30 июня 2011

Это может помочь.(Не спрашивай почему ...)

drpDwnLstBillContact.SelectedIndex = -1;
drpDwnLstBillContact.SelectedIndex = 
    drpDwnLstBillContact.Items.IndexOf(drpDwnLstBillContact.Items.
        FindByValue(billContactId.ToString()));

drpDwnLstRegContact.SelectedIndex = -1;
drpDwnLstRegContact.SelectedIndex = 
    drpDwnLstRegContact.Items.IndexOf(drpDwnLstRegContact.Items.
        FindByValue(regContactId.ToString()));

drpDwnLstTechContact.SelectedIndex = -1;
drpDwnLstTechContact.SelectedIndex = 
    drpDwnLstTechContact.Items.IndexOf(drpDwnLstTechContact.Items.
        FindByValue(techContactId.ToString()));
1 голос
/ 30 июня 2011

Я не могу ясно понять, в чем проблема.Однако я полагаю, что вы заполняете DropDownList на каждом Page.Load событии, в результате которого всегда выбирается первый элемент.

Попробуйте выполнить следующее на обработчике Page.Load:

if (!Page.IsPostBack)
{
    FillDropDownList();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...