下拉列表中的重复项目

时间:2012-03-28 12:12:14

标签: c# asp.net drop-down-menu

我创建了一个带有下拉列表的员工注册页面。它用于为每个用户选择优先级。假设我想在此时编辑一些用户详细信息,请使用以下代码选择下拉列表。它返回带有第一个索引的重复值。这意味着用户具有第三优先级意味着它选择第三优先级而没有第一优先级。

   foreach (DataRow dr in DS.Rows)
            {
                txtemail.Enabled = false;
                pan_addEdit.Visible = true;
                this.btnSave.Text = "Update";
                lbluserid.Text = Convert.ToString(dr["fdluserId"]);
                txtuername.Text = Convert.ToString(dr["flduser"]);
                txtPass.Text = Convert.ToString(dr["fldpass"]);
                txtemail.Text = Convert.ToString(dr["fldemail"]);
                ddlstatus.SelectedValue = Convert.ToString(dr["fldstatus"]);
                ddlusergroup.SelectedValue = Convert.ToString(dr["fldgroupId"]);
                ddldept.SelectedValue = Convert.ToString(dr["flddept"]);
                ddlperiority.SelectedValue = Convert.ToString(dr["fldperiority"]);
            }

下拉列表在绑定后显示以下值

   1st priority
   2nd priority
   3rd priority

下拉列表在绑定后显示以下值

  3rd priority
  2nd priority
  3rd priority

请帮我修复此错误..

4 个答案:

答案 0 :(得分:2)

您不想更改所选项目的Text。您想要更改选择本身。因此,您可以使用DropdownList的SelectedIndexSelectedValue属性。

ddlperiority.SelectedValue = Convert.ToString(dr["fldperiority"]);

当然必须有一个与dr["fldperiority"]匹配的值。也许这是文本字段,您需要PK / FK字段。

答案 1 :(得分:1)

您可以使用FindByValue方法在DropDownList中搜索值与参数匹配的Item。

ddlperiority.ClearSelection();
ddlperiority.Items.FindByValue(dr["fldperiority"].ToString()).Selected = true;

或者,您可以使用FindByText方法在DropDownList中搜索与参数匹配的文章。

在使用FindByValue方法之前,不要忘记重置DropDownList,以便使用ClearSelection()方法不选择任何项目。它清除列表选择并将所有项的Selected属性设置为false。否则您将获得以下异常。

"Cannot have multiple items selected in a DropDownList"

答案 2 :(得分:0)

请按照下面的说法

 ddlstatus.Items.Clear();
 ddlperiority.Items.Clear();
 ddlusergroup.Items.Clear();
 ddldept.Items.Clear();
 foreach (DataRow dr in DS.Rows)
            {
                txtemail.Enabled = false;
                pan_addEdit.Visible = true;
                this.btnSave.Text = "Update";
                lbluserid.Text = Convert.ToString(dr["fdluserId"]);
                txtuername.Text = Convert.ToString(dr["flduser"]);
                txtPass.Text = Convert.ToString(dr["fldpass"]);
                txtemail.Text = Convert.ToString(dr["fldemail"]);
                ddlstatus.Items.Add ( Convert.ToString(dr["fldstatus"]));
                ddlusergroup.Items.Add( Convert.ToString(dr["fldgroupId"]));
                ddldept.Items.Add(  Convert.ToString(dr["flddept"]));
                ddlperiority.Items.Add(  Convert.ToString(dr["fldperiority"]));
            }

答案 3 :(得分:0)

如果上面的答案仍然不适合你,请尝试这样的事情

var item = Convert.ToString(dr["fldperiority"]);
    switch(item)       
          {         
             case "1st priority":   
                ddlperiority.SelectedIndex = 0;
                break;
             case "2nd priority":   
                ddlperiority.SelectedIndex = 1;
                break;
             case "3rd priority":   
                ddlperiority.SelectedIndex = 2;
                break;
           }