2012-03-28 81 views
2

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

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 

请帮我解决这个错误后,后显示如下值..

+0

只是使** **的SelectedIndex相应 – 2012-03-28 12:14:27

+0

不是在保存的索引值 – FDO 2012-03-28 12:18:00

+0

什么?我没有得到它 – 2012-03-28 12:19:46

回答

1

可以使用FindByValue方法来搜索DropDownList中的项目与参数匹配的值。

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" 
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"])); 
      } 
+0

它不接受选定的价值。 – FDO 2012-03-28 12:17:20

+0

可以请你发布你的代码? – PraveenVenu 2012-03-28 12:23:41

+0

再次看到我的帖子 – FDO 2012-03-28 12:33:35

2

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

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

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

+0

当我使用seleced值时,该步骤已跳过。 – FDO 2012-03-28 12:21:01

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; 
      } 
+0

下拉列表值是动态而非静态值。 – FDO 2012-03-28 12:24:18

+0

你没有设置** datavalue字段**和** datatextfield ** ?? – 2012-03-28 12:25:33