根据下拉选择c#填充Listview

时间:2013-12-17 21:11:15

标签: c# mysql asp.net listview

我正在尝试根据下拉菜单中的选择填充列表视图。

下拉菜单包含类别列表,我希望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();
        }
    }

任何人都可以帮我修复此代码,提供此方法的替代方法吗? 谢谢

2 个答案:

答案 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控件没有DataValueFieldDataTextField属性。我认为你将这与下拉列表混淆,你可以在其中设置这些值。

从代码中删除它们,如下所示:

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();
    }
}

  

注意:由于CategorySELECT DISTINCT查询返回的唯一字段,因此它将是列表视图中显示的唯一字段。