将数据回传到下拉列表后,将重复数据

时间:2018-07-05 07:43:48

标签: asp.net dropdown

我有一个带有文本框和两个下拉菜单的表单。我正在使用此表格进行数据的插入/详细/编辑。最初用于插入数据,该表格工作正常。但是,当我从数据库中检索数据时,下拉值将重复,即,检索到的值将再次在下拉列表中重复。

我的代码::

<div class="form-group">
    <label>Name</label><span class="required">*</span>
    <input type="text" class="form-control" maxlength="200" runat="server" id="txtEmpName" autocomplete="off" />
</div>
<div class="form-group">
    <label>Gender</label><span class="required">*</span>
    <select class="form-control" id="selectEmpGender" runat="server" style="height: 34px;">
        <option value="0">MALE</option>
        <option value="1">FEMALE</option>
        <option value="2">UNKNOWN</option>
    </select>
</div>
<div class="form-group">
    <label>Marital Status</label>
    <select class="form-control" id="selectEmpMarried" runat="server" style="height: 34px;">
        <option value="0">BACHELOR</option>
        <option value="1">MARRIED</option>
        <option value="2">DIVORCED</option>
    </select>
</div>
  <div class="form-group">
    <div class="col-md-4">
        <asp:Button ID="btnAddFamMem" runat="server" Text="ADD" OnClick="btnAddFamMem_Click"  />
    </div>
</div>

我正在将SelectedIndexChange方法上的网格视图中的数据显示为::

protected void famGrid_SelectedIndexChanged(object sender, EventArgs e)
{
    GridViewRow gvr = famGrid.SelectedRow;
    txtEmpName.Value = gvr.Cells[1].Text == "&nbsp;" ? null : gvr.Cells[1].Text;
    selectEmpGender.Items[selectEmpGender.SelectedIndex].Text = gvr.Cells[2].Text == "&nbsp;" ? null : gvr.Cells[2].Text;
    selectEmpMarried.Items[selectEmpMarried.SelectedIndex].Text = gvr.Cells[3].Text == "&nbsp;" ? null : gvr.Cells[3].Text;
}

请查看附件中的图像,该图像是我从网格视图检索插入的数据进行编辑/详细处理后的数据。

检索到的selectEmpGender值为UNKNOWN,在下拉列表中重复该值,并且不显示选项MALE。同样,检索到的selectEmpMarried的值是MARRIED,该值在下拉列表中重复,并且BACHELOR选项未显示。为什么会这样?

enter image description here

3 个答案:

答案 0 :(得分:1)

我认为您不想更改所选项目的文本,但您想选择正确的项目:

string gender = gvr.Cells[1].Text;
ListItem genderItem = selectEmpGender.Items.FindByText(gender);
if(genderItem != null)
    selectEmpGender.SelectedIndex = selectEmpGender.Items.IndexOf(genderItem);
// same for the other

答案 1 :(得分:0)

在插入或更新员工详细信息之后,清除下拉列表,然后绑定其详细信息。

答案 2 :(得分:0)

After inserting,
txtName.Text = string.Empty;
selectEmpGender.SelectedIndex = -1;
selectEmpMarried.SelectedIndex = -1;

While editing,
bind datas from genderItem 
selectEmpGender.SelectedItem.Value= genderItem.gender;