Как изменить SelectedValue DropDownList перед Bind? - PullRequest
0 голосов
/ 12 декабря 2011

В основном у меня есть таблица Customers с одним из полей Gender, и я делаю форму, которая позволяет пользователю обновлять информацию о клиенте, в данном случае пол. Значение SelectedValue для пола по умолчанию - «Мужской» или «Женский», и я хочу изменить «Мужской» на 0 и «Женский» на 1, прежде чем фактически связать его с базой данных. Я дошел до того, что за этим стоит мой код:

protected void fmvCustomerDetails_ItemUpdating(object sender, FormViewUpdateEventArgs e)
{
    if (fmvCustomerDetails.editGender.val.Equals("Male"))
        fmvCustomerDetails.editGender.val = 0;
}

fmvCustomerDetails - это идентификатор моего объекта FormView, а editGender - это идентификатор DropDownList. По причинам, которые слишком проблематичны для объяснения, я не могу просто изменить базу данных, чтобы принимать "Мужской" или "Женский" в качестве ввода.

Ответы [ 3 ]

0 голосов
/ 12 декабря 2011

Можете ли вы изменить элементы в вашем DropDownList так, чтобы текст был "Мужской", а значение было "0"?

0 голосов
/ 13 декабря 2011

Я нашел обходной путь, который обходит эту проблему, поэтому я буду удалять этот вопрос.

Я отмечаю это как ответ, так как, очевидно, мне нужно иметь принятый ответ, прежде чем я могу удалитьмой вопрос.(Странно)

0 голосов
/ 12 декабря 2011

Предполагая, что вы используете комбинированный список (DropDownList является только DropDownStyle класса ComboBox), вы должны использовать DisplayMember в качестве пола (мужской, женский) и ValueMember в качестве 0 и 1.
Таким образом, вам не придется делать какие-либо хитрые изменения значений перед отправкой в ​​вашу базу данных. Вы можете просто привязать свое поле.

Вы можете создать ArrayList, который будет содержать как требуемое значение, так и строку, которую вы хотите отобразить. Затем привяжите значение к ValueMember и строку к DisplayMember.

    ArrayList arrGender = new ArrayList();
    arrGender.Add(new { id = 0, sex = "Male" });
    arrGender.Add(new { id = 1, sex = "Female" });

    cbGender.DataSource = arrGender;
    cbGender.DisplayMember = "sex";
    cbGender.ValueMember = "id";

Если вы хотите получить номер, связанный с вашим DropDownList, вы можете получить его через SelectedValue.

    cbGender.SelectedValue             //Returns the 0 or the 1
...