在ListView中加载Databind DropDownList

时间:2013-11-15 08:55:55

标签: c# asp.net webforms listviewitem

我有一个ListView控件,其中包含ItemTemplate标记内的DropDownList控件。 我正在尝试使用ListView控件的ItemCommand事件中的以下代码将现有列表项加载到DropDownList:

DropDownList ddlItem = (DropDownList)e.Item.FindControl("ddlItem");

con.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "SELECT ID, Name FROM Items";
SqlDataReader data = cmd.ExecuteReader();
ddlItem.DataSouce = data;
ddlItem.DataTextField = "Name";
ddlItem.DataValueField = "ID";
ddlItem.DataBind();
con.Close();

绑定项目后,我想根据数据库记录选择所选项目。

我错过了什么吗?

1 个答案:

答案 0 :(得分:7)

您应该在ListView' s ItemDataBound事件中执行此操作。您可以通过DropDownList找到e.Item.FindControl("ddlItem")那里的e.Item.DataItem来获取该项目的基础数据源protected void ListView1_ItemDataBound(Object sender, ListViewItemEventArgs e) { if (e.Item.ItemType == ListViewItemType.DataItem) { DropDownList ddlItem = (DropDownList) e.Item.FindControl("ddlItem"); var rowView = e.Item.DataItem as DataRowView; int id = (int)rowView["ID"]; // whatever // get data from id ... //ddlItem.DataSouce = data; //ddlItem.DataTextField = "Name"; //ddlItem.DataValueField = "ID"; //ddlItem.DataBind(); } } 。如果您不确定类型,请使用调试器。

{{1}}
相关问题