【问题标题】:Dropdown lists OnSelected Index changed event and Gridview Respond to two dropdown lists下拉列表 OnSelected 索引更改事件和 Gridview 响应两个下拉列表
【发布时间】:2017-02-17 06:42:58
【问题描述】:

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

例如,一个 DropDownList 包含 GroupNames,另一个包含 Status。两个 DropDownLists 都可以回发。因此,如果我从第一个 DropDownList 中选择一个组名,则 GridView 应该根据该名称显示所有结果。同样,如果我从另一个 DropDownList 中选择状态,则 GridView 应根据状态显示结果。但我不知道如何绑定 GridView 以响应 2 DropDownLists。

顺便说一句,我将第一个下拉列表和网格视图绑定到数据源对象,它正在从数据库中获取数据。如果我将相同的数据源绑定到第二个下拉列表,我会收到错误如何将第二个下拉列表绑定到相同的 gridview。

有什么建议吗?? 请帮忙??

【问题讨论】:

  • 您是否尝试过选择的更改事件?
  • 是的,我是编码新手,我不知道如何从两个下拉列表中从 ddlselectindex 获取数据.. 请帮助
  • 贴出你尝试过的代码,这样卡在哪里就容易了,这就是 SO 的工作原理
  • 我给了你示例图片,请指导我开发代码
  • 把你的代码放在你的Main Post 中而不是在评论中。

标签: c# asp.net gridview


【解决方案1】:

设置您的dropdownLists AutoPostBack="true",通过检查它是否不是postBack 来填充page_load 中的列表,然后您的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 操作类等进行更改。我已经编写/测试了这段代码,它运行良好。

希望对你有帮助。

【讨论】:

  • 在接下来的几天里,组名可能会增加,下拉列表中的项目可能会增加,此时手动在列表中再次写入项目可能会出现问题..
  • 这就是为什么您不需要该类来获取项目,只需从 db 获取数据并将它们设置为dropdownlist,其余代码将保持不变。它解决了你的问题吗?
  • 现在有什么问题?我的解决方案不适合你?
  • 不,它不起作用,我已经更改了代码,但 gridview 应该响应两个它不起作用的下拉列表。如果可能的话,请帮助我提供总代码。
  • 问题是我们不能将同一个数据源设置为下拉菜单。如何创建多个数据源
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-15
  • 2017-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多