如何在绑定前更改下拉列表的SelectedValue

本文关键字:下拉列表 SelectedValue 绑定 | 更新日期: 2023-09-27 18:17:36

基本上,我有一个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对象的ID, editGender是下拉列表的ID。由于解释起来太麻烦的原因,我不能直接更改数据库以接受"Male"或"Female"作为输入。

如何在绑定前更改下拉列表的SelectedValue

您可以更改下拉列表中的项目,使文本为"Male",值为"0"吗?

我已经找到了一个解决这个问题的方法,因此我将删除这个问题。

我把这个标记为答案,因为在我删除我的问题之前,我显然需要有一个被接受的答案。(奇怪的)

假设你正在使用一个组合框(DropDownList只是combobox类的DropDownStyle),你应该使用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";

如果你想获得与下拉列表相关联的数字,你可以通过SelectedValue获得它。

    cbGender.SelectedValue             //Returns the 0 or the 1