Virendra S from Bangalore, Karnataka Ответов: 2

Выбранное значение Dropdownlist изменяется автоматически


У меня есть выпадающий список, если я выбираю одно значение, оно меняется на другое (только в некоторых случаях), то я заметил, что значение DataValueField одинаково для обоих, но значение DataTextField отличается.
dtCurrency имеет два столбца - шорткод и длинное имя.
ddlCurrency.DataSource = dtCurrency;
        ddlCurrency.DataTextField = "shortcode";
        ddlCurrency.DataValueField = "Long Name";
        ddlCurrency.DataBind();
        ddlCurrency.Items.Insert(0, "Currency");


Пример:
Я выбираю попробовать он автоматически меняется на TRL,
то же самое для BGN к BGL меняется.

dtCurrency:
shortcode	Long Name
BGL	Bulgarian Lev
BGN	Bulgarian Lev
TRL	Turkish Lira
TRY	Turkish Lira
INR     Indian Rupees
USD     US Dollors


Что я уже пробовал:

Это происходит только тогда, когда DataValueField является тем же самым. как решить эту проблему.

CHill60

Попробуйте поставить "(старый)" в конце длинного имени для BGL и TRL?

F-ES Sitecore

Вы используете "длинное имя" в качестве значения, поэтому при выборе BGL используется болгарский лев, так что если это идентификатор, то как он узнает, что вы имеете в виду BGL, а не BGN? Идентификаторы должны быть уникальными, а ваши-нет. Вам нужно что-то сделать, чтобы ваш идентификатор (длинное имя) был уникальным. Вы уверены, что на самом деле вам не нужен шорткод в качестве значения и длинное имя в качестве текста?

2 Ответов

Рейтинг:
2

Rohan Dhamecha

Для Dropdownlist должны быть различные значения для поля значения данных. Тем не менее, вариант, который можно использовать для текущей ситуации, есть:

Дайте шорткод как для поля, текста, так и для значения и на основе выбранных индексных данных можно извлечь их из таблицы данных.


Рейтинг:
2

Vincent Maverick Durano

Цитата:
Это происходит только тогда, когда DataValueField является тем же самым. как решить эту проблему.


Это нормальное поведение выпадающего списка.

Как уже упоминали другие, DataValueField для вашего DropDownList должен быть уникальным так что выбор не будет испорчен. Чтобы исправить это, используйте shortcode поле как то DataValueField. Например:

ddlCurrency.DataSource = dtCurrency;
ddlCurrency.DataTextField = "shortcode";
ddlCurrency.DataValueField = "shortcode";
ddlCurrency.DataBind();
ddlCurrency.Items.Insert(0, "Currency");


Теперь, если вы действительно хотите показать Long Name затем вы можете объединить оба поля и отобразить их как одно целое. Это действительно зависит от вас. Опять же, основная идея здесь заключается в том, чтобы сделать это вашим DataValueField значения должны быть уникальными и не иметь повторяющихся значений.