2010-08-30 80 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; 

这实际上设置。

相关问题