我的Form和1 GridView上有2个DropDownLists。我希望GridView根据DropDownLists中的选择显示数据。
例如,One DropDownList包含GroupNames,另一个包含Status。 DropDownLists都可以发回。因此,如果我从1st DropDownList中选择一个组名,则GridView应根据该名称显示所有结果。同样,如果我从其他DropDownList中选择状态,GridView应根据状态显示结果。但我无法弄清楚如何绑定GridView以响应2 DropDownLists。
BTW我将第一个下拉列表和网格视图绑定到DataSource对象,后者从数据库获取数据。如果我将相同的数据源绑定到第二个下拉列表,如何将第二个下拉列表绑定到同一个gridview,我会收到错误。
任何建议? 请帮忙??
答案 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操作类等中进行更改。我已经编写/测试了这段代码,它运行得很完美。
希望它有所帮助。