使GridView响应2个下拉列表

时间:2010-03-11 02:28:38

标签: asp.net gridview drop-down-menu

我的DropDownList和1 Form上有2 GridView个。我希望GridView根据DropDownList s。

中的选择显示数据

例如,一个DropDownList包含名称,另一个包含日期。 DropDownList都可以发回。因此,如果我从第一个DropDownList中选择一个名称,则GridView应根据该名称显示所有结果。同样,如果我从其他Date中选择DropDownList,则GridView应根据日期显示结果。但我无法弄清楚如何绑定GridView以响应2 DropDownList

BTW我将下拉列表和网格视图绑定到DataSource对象,后者从数据库中获取数据。

任何建议?

2 个答案:

答案 0 :(得分:0)

如果您使用两个DataSource从db中选择数据并将每个DropDownList绑定到DataSouce,那么它会更好更清洁。我尝试在我的ASP.NET应用程序中做你想要的但不幸的是我有错误:/

我唯一的解决办法就是不要在aspx文件中使用DropDownList,但在SelectedItem DataContext事件中使用DataView,那么你可以将两者绑定到如下所示DataSource。我不确定,但是在使用新数据源之前,您必须在GridView中使用null来重置protected void btPokaz_Click(object sender, EventArgs e) { DataClassesDataContext db = new DataClassesDataContext(); var DzieciGrupa = from p in db.Dzieckos where p.Grupy.Numer == Convert.ToInt32(this.dropListGrupy.SelectedValue) orderby p.Nazwisko select new { p.Imie, p.Nazwisko }; if (DzieciGrupa.Count() == 0) this.Label1.Text = "W " + this.dropListGrupy.SelectedValue.ToString() + " grupie nie ma dzieci zapisanych!"; this.GridGrupy.DataSource = null; this.GridGrupy.DataSource = DzieciGrupa; // this.GridView1.DataSourceID = String.Empty; this.GridGrupy.DataBind();

{{1}}

尝试并告诉说有效;)

答案 1 :(得分:0)

对于您的问题您应该为每个数据源创建dwo EDM类。在DDL选择事件中简单您选择的DataContext取决于用户在DDL中的选择。

示例:

protected void DDL_SelectedItem(object sender, EventArgs e)
{
    TypeOfQueryData query = null;//you must know what type is data You query
    if(this.dropListGrupy.SelectedValue==someItemSelect)
    {
    DataClasses1DataContext db = new DataClasses1DataContext();
     //query to get data from source
    query= from p in db.Dzieckos
                where p.Grupy.Numer == Convert.ToInt32(this.dropListGrupy.SelectedValue)
                orderby p.Nazwisko
                select new { p.Imie, p.Nazwisko };
    }
    if(this.dropListGrupy.SelectedValue==otherItemSelect)
    {
     DataClasses2DataContext db = new DataClasses2DataContext();
     query= from p in db.Dzieckos
                where p.Grupy.Numer == Convert.ToInt32(this.dropListGrupy.SelectedValue)
                orderby p.Nazwisko
                select new { p.Imie, p.Nazwisko };
    }
    this.GridGrupy.DataSource = null;
    this.GridGrupy.DataSource = DzieciGrupa;
 //   this.GridView1.DataSourceID = String.Empty;//maybe You need do that
    this.GridGrupy.DataBind();