Раскрывающиеся страницы заполнены тем же элементом списка - PullRequest
2 голосов
/ 09 января 2009

У меня есть Gridview, в котором у меня есть два поля шаблона раскрывающегося списка. Я связал их во время выполнения с тем же элементом списка.

li = new listitem ("1","1");
dl1.items.add(li);
dl2.items.add(li);

li = new listitem ("2","2");
dl1.items.add(li);
dl2.items.add(li);

li = new listitem ("3","3");
dl1.items.add(li);
dl2.items.add(li);

dl1.selectedvalue = "2";
dl2.selectedvalue = "3";

После выполнения выше, dl1 и dl2 оба показывают мне «3» в качестве выбранного значения. Почему?

Я знаю способ использования двух разных списочных элементов при связывании, но я хочу знать, почему вышеописанное происходит?

Ответы [ 5 ]

4 голосов
/ 09 января 2009

Рассматривая только последнюю часть кода: у вас есть один элемент списка, и он появляется в двух разных списках. Но это все еще один объект. Как вы ожидаете, что один объект будет иметь два разных значения для одного свойства (SelectedValue)?

3 голосов
/ 09 января 2009

Класс ListItem имеет свойство Selected, которое отмечает, если элемент выбран. Я не проверял свойство DDL SelectedValue, чтобы увидеть, что оно делает, но я предполагаю, что для свойства ListItem.Selected задано значение true, и поскольку вы используете один и тот же объект в обоих раскрывающихся списках, оно помечается как «выбранный» в обоих.

Я уверен, что если бы это был список с множественным выбором, оба «2» и «3» были бы помечены как «выбранные».

3 голосов
/ 09 января 2009

Вы должны создать экземпляр каждого элемента списка для каждого раскрывающегося списка.

ListItem li1 = new ListItem("1","1");
dl1.items.add(li1);

ListItem li2 = new ListItem("1", "1");
dl2.items.add(li2);

Edit: Джон описал, что я хочу иметь в виду. У вас есть только один объект, который имеет значение. Поэтому не ожидайте разных значений для каждого выпадающего списка.

Когда вы установите dl1 в «3», они оба получат одинаковое значение, потому что оба раскрывающихся списка ссылаются на один и тот же объект!

1 голос
/ 09 января 2009

список распределяется между двумя раскрывающимися списками. когда вы устанавливаете выбранное значение для одного из раскрывающихся списков, он устанавливает элемент списка как выбранный. так как список элементов является общим, он выбран в обоих раскрывающихся списках

1 голос
/ 09 января 2009

Я бы подумал, что это будет проблема, связанная со значением. Я уверен, что и d1, и d2 будут указывать на одно и то же место в памяти, если они будут добавлены из одного и того же элемента списка ...

...