2012-10-12 30 views
0

GridView中有一個DropDownlist,只有在單擊編輯時才應該可見。我從後面的代碼綁定了DropDownList。當我點擊編輯時,該單元格的標籤值應該自動在DropDownList中被選中。如何使DropDownList自動根據Label.Text選擇

我已經嘗試的代碼是:

protected void GridView3_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      SqlCommand cmd = new SqlCommand("SELECT Location_Name FROM Location_Table"); 
      DropDownList bind_drop = (e.Row.FindControl("DropList") as DropDownList); 
      bind_drop.DataSource = this.ExecuteQuery(cmd, "SELECT"); 
      bind_drop.DataTextField = "Location_Name"; 
      bind_drop.DataValueField = "Location_Name"; 
      bind_drop.DataBind(); 

      string Loc_type = (e.Row.FindControl("id2") as Label).Text.Trim();    
      bind_drop.Items.FindByValue(Loc_type).Selected = true; 
     } 
    } 

當我運行的代碼,它提供了一個異常錯誤對象引用未設置在上面的代碼的最後一行。 無法找出什麼是錯的。請幫助

+0

您應該向我們展示GridView的相關部分。爲什麼不使用'e.Row.DataItem'來代替,爲什麼你要爲每個'GridViewRow'選擇所有位置? –

+0

錯誤很可能是因爲'Loc_type'中的值不是選擇列表中的值。也可能是由於'e.Row.FindControl(「id2」)'找不到具有該ID的控件。與e.Row.FindControl(「DropList」)相同。 – Gromer

+0

@Gromer我已經確定'Loc_type'是列表中的項目。我已經使用了我在aspx代碼中使用的確切ID。我再次檢查。 –

回答

1

您必須確保您的列表包含標籤值。

var index = DropDownList1.Items.IndexOf(Loc_type); 
if(index > 0) 
{ 
    DropDownList1.SelectedIndex = index; 
} 
else 
{ 
    Console.WriteLine("item does not exist"); 
} 
相關問題