多数情况下,你可能要设定Drop-Down List中的选定项来匹配特定值——通常是显示模式中的单元格的值。你可以将它的SelectedIndex属性设定成你想要显示的值的索引值来实现。
下例在DataGrid Item的ItemDataBound事件句柄中采取了一种可靠的方式来实现它。这样使用这个事件是正确的,因为它保证了Drop-Down List已经被生成,不管它使用了什么数据源。
技巧在于要知道绑定到Drop-Down List上的值。典型情况下,这个值已经提供给你,要么是在当前的item中,要么是在它的DataItem 属性中,item返回一个包含当前记录的DataRowView 对象。一旦有了这个值,可以通过Drop-Down List的FindByText 或者FindByValue 方法来定位当前项,然后使用item的IndexOf属性来返回索引。
private void DataGrid1_ItemDataBound(object sender,
System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemType == ListItemType.EditItem){
DataRowView drv = (DataRowView) e.Item.DataItem;
String currentgenre = drv["genre"].ToString();
DropDownList ddl =
(DropDownList) e.Item.FindControl("DropDownList1");
ddl.SelectedIndex =
ddl.Items.IndexOf(ddl.Items.FindByText(currentgenre));
}
}