2012-03-28 151 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