下拉列表OnSelected Index已更改事件,Gridview已响应两个下拉列表

时间:2017-02-17 06:42:58

标签: c# asp.net gridview

我的Form和1 GridView上有2个DropDownLists。我希望GridView根据DropDownLists中的选择显示数据。

例如,One DropDownList包含GroupNames,另一个包含Status。 DropDownLists都可以发回。因此,如果我从1st DropDownList中选择一个组名,则GridView应根据该名称显示所有结果。同样,如果我从其他DropDownList中选择状态,GridView应根据状态显示结果。但我无法弄清楚如何绑定GridView以响应2 DropDownLists。

BTW我将第一个下拉列表和网格视图绑定到DataSource对象,后者从数据库获取数据。如果我将相同的数据源绑定到第二个下拉列表,如何将第二个下拉列表绑定到同一个gridview,我会收到错误。

任何建议? 请帮忙??

1 个答案:

答案 0 :(得分:0)

设置dropdownLists AutoPostBack="true",在page_load内填写列表,检查它是否不是postBack,然后您的SelectedIndexChange活动将会火。

.aspx代码:

       <asp:DropDownList AutoPostBack="true" ID="ddlGroupName" OnSelectedIndexChanged="ddlGroupName_SelectedIndexChanged" runat="server" />
        <asp:DropDownList ID="ddlStatus" AutoPostBack="true" OnSelectedIndexChanged="ddlStatus_SelectedIndexChanged" runat="server" />
        <asp:DataGrid runat="server" ID="gv1" AutoGenerateColumns="False">
            <Columns>
                <asp:BoundColumn HeaderText="Id" DataField="Id" />
                <asp:BoundColumn HeaderText="Group Name" DataField="GroupName" />
            </Columns>
        </asp:DataGrid>

用于填充DropDownLists

的类
    public class Groups
    {
        public int Id { get; set; }
        public string GroupName { get; set; }
    }
    public class transMedHandler
    {
        public static List<Groups> GetGroupNames()
        {
            return new List<Groups>() 
            {
                new Groups {Id = 1, GroupName = "cardia connections" }, 
                new Groups { Id = 2, GroupName = "citizens group" }, 
                new Groups { Id = 3, GroupName = "testgroup etc" }
            };
        }
        public static List<Groups> GetNames()
        {
            return new List<Groups>() 
            { 
                new Groups { Id = 1, GroupName = "active" }, 
                new Groups { Id = 2, GroupName = "assigned" }, 
                new Groups { Id = 3, GroupName = "returned" }, 
                new Groups{ Id = 4, GroupName = "deactivated" }
            };
        }
    }

我已经使用了类,因此您也可以通过数据库中的某些表填充这些列表。 最后是事件处理和操作的后端代码。

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            //populating ddlGroupName DropDown
            ddlGroupName.DataSource = transMedHandler.GetGroupNames();
            ddlGroupName.DataTextField = "GroupName";
            ddlGroupName.DataValueField = "Id";
            ddlGroupName.DataBind();
            ddlGroupName.SelectedIndex = 0;
            //populating ddlStatus DropDown
            ddlStatus.DataSource = transMedHandler.GetNames();
            ddlStatus.DataTextField = "GroupName";
            ddlStatus.DataValueField = "Id";
            ddlStatus.DataBind();
            ddlStatus.SelectedIndex = 0;
        }
    }
    protected void GetGroupNames() 
    {
        gv1.DataSource = transMedHandler.GetGroupNames();
        gv1.DataBind(); 
    }
    protected void GetNames()
    {
        gv1.DataSource = transMedHandler.GetNames();
        gv1.DataBind();
    }
    protected void ddlGroupName_SelectedIndexChanged(object sender, EventArgs e)
    {
        GetGroupNames(); 
    }
    protected void ddlStatus_SelectedIndexChanged(object sender, EventArgs e)
    {
        GetNames();
    }

您可以根据需要在gridView,DropDown操作类等中进行更改。我已经编写/测试了这段代码,它运行得很完美。

希望它有所帮助。