2010-08-30 77 views
0

我有一個從數據庫表中填充頁面加載事件的下拉列表。以編程方式更改數據綁定下拉列表

下拉有DataTextField設置爲項目名稱和DataValueField設置爲項目ID(整數)。

後來我改變在GridView

GridViewRow row = GridView1.SelectedRow; 
ddlProjectList.SelectedItem.Text = row.Cells[2].Text; 

是否更改下拉列表與此代碼的SelectedIndexChanged事件選擇的項目與此代碼dropdowlist導致DataValueField屬性也更改爲正確的項目ID號?如果沒有,是否有更好的方法來做到這一點?

=============================================編輯 實際上這段代碼似乎在列表中添加了一個額外的項目,以便我使用此代碼設置的項目被列出兩次,因此我不認爲我的代碼是正確的

+0

更好的答案http://stackoverflow.com/questions/3496456/setting-dropdownlist-selecteditem-programmatically#answer-3496495 – Four 2012-09-27 13:52:31

回答

0

這不會改變您的DropDownList中所選項目的文字。您是否想更改項目的文本和值,或者是否希望從DropDownList中選擇與網格中所選行相關的項目?

要更改項目名稱和ID,您必須在ProjectList後面的數據源中更改它。但是,如果你只是想選擇相關的項目,您可以使用此:

 
var row = GridView1.SelectedRow; 

if (ProjectList.Items.FindByText(row.Cells[2].Text) != null) 
{ 
    ProjectList.ClearSelection(); 
    ProjectList.Items.FindByText(row.Cells[2].Text).Selected = true; 
} 
0

設置SelectedItem.Text實際上並未改變所選內容項目的文本,它會更改當前選定項目的文本。您需要使用ddl.Items.FindItemByText(或者它可能帶有FindByText,現在我忘記了)找到該項目,然後將ListItem.Selected屬性設置爲true。

HTH。

0

你可以做

ddlProjectList.FindByText(row.Cells[2].Text).Selected = true; 

這實際上設置。