我正在尝试根据下拉菜单中的选择填充列表视图。
下拉菜单包含类别列表,我希望listview显示该类别的所有电影。所有这些信息都在mysql数据库中。
我通过两个下拉菜单实现了这一点,但代码不适用于listview,因为我收到以下错误: 'System.Web.UI.WebControls.ListView'不包含'DataValueField'的定义,也没有扩展方法'DataValueField'接受类型'System.Web.UI.WebControls.ListView'的第一个参数' (您是否缺少using指令或程序集引用?)并且相同的错误,但将'DataValueField'替换为'DataTextField'。
下拉代码:
public void ddl_Cat()
{
if (!Page.IsPostBack)
{
MySqlCommand sql_Category = new MySqlCommand("SELECT DISTINCT(Category) FROM DVD", cs);
cs.Open();
MySqlDataReader ddlgetcat;
ddlgetcat = sql_Category.ExecuteReader();
ListViewCat.DataSource = ddlgetcat;
ListViewCat.DataValueField = "Category";
ListViewCat.DataTextField = "Category";
ListViewCat.DataBind();
cs.Close();
cs.Dispose();
}
}
listview代码:
protected void ListViewCat_SelectedIndexChanged(object sender, EventArgs e)
{
string categorySelection = ddlCategory.SelectedValue;
string available = string.Empty;
{
MySqlCommand cd_available = new MySqlCommand(String.Format("SELECT * FROM DVD WHERE (Cateogry) ='{1}' and (Title) ='{0}'", ddlCategory.SelectedItem.ToString().Trim(), categorySelection), cs);
cs.Open();
available = Convert.ToString(cd_available.ExecuteScalar());
cs.Close();
cs.Dispose();
}
}
任何人都可以帮我修复此代码,提供此方法的替代方法吗? 谢谢
答案 0 :(得分:2)
那是因为asp List View控件上不存在这两个属性(DataValueField& DataTextField):http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listview(v=vs.110).aspx。它们确实存在于asp下拉列表控件中:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.dropdownlist(v=vs.110).aspx
答案 1 :(得分:2)
就像错误所说的那样,ListView
控件没有DataValueField
或DataTextField
属性。我认为你将这与下拉列表混淆,你可以在其中设置这些值。
从代码中删除它们,如下所示:
public void ddl_Cat()
{
if (!Page.IsPostBack)
{
MySqlCommand sql_Category = new MySqlCommand("SELECT DISTINCT(Category) FROM DVD", cs);
cs.Open();
MySqlDataReader ddlgetcat;
ddlgetcat = sql_Category.ExecuteReader();
ListViewCat.DataSource = ddlgetcat;
ListViewCat.DataBind();
cs.Close();
cs.Dispose();
}
}
注意:由于
Category
是SELECT DISTINCT
查询返回的唯一字段,因此它将是列表视图中显示的唯一字段。