-
Nov 8th, 2021, 01:23 PM
#1
Thread Starter
New Member
Filter Grid View with 2 drop down menus
I have a simple gridview that needs to shows the facilities in our system. The Gridview also needs to be filtered by two dropdown menus.
- Menu 1: facility type
- Menu 2: facility status
I can get the gridview to bind on load and I can get the gridview to bind one dropdown menu after update control but I can’t get it to do both. I need to get it to filter on whichever dropdown menu is being selected, either by facility or by status.
I’m not passing the value from the dropdown list properly, how do I do this?
Code:
Protected Sub DropDownList1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DropDownList1.SelectedIndexChanged
Dim srtfacType As String = Me.DropDownList1.SelectedValue
If IsPostBack Then
Me.GridView1.DataSource = sqlFacType
Me.GridView1.DataBind()
End If
'If Me.DropDownList1.Text = facType Then
'Me.GridView1.DataSource = SqlDataSource1
'Me.GridView1.DataBind()
'End If
End Sub
Protected Sub DropDownList2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DropDownList2.SelectedIndexChanged
Dim srtfacStatus As String = Me.DropDownList2.SelectedValue
If IsPostBack Then
Me.GridView1.DataSource = Sql
Me.GridView1.DataBind()
End If
End Sub
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True"></asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:HDOConnectionString %>" SelectCommand="SELECT DISTINCT [Facility_Name], [Facility_Type], [Location], [ContactPerson], [Status], [Phone], [City] FROM [FacilityLocations] WHERE ([Facility_Type] = @Facility_Type) ORDER BY [Facility_Type]">
<SelectParameters>
<asp:ControlParameter ControlID="DropDownList1" Name="Facility_Type" PropertyName="SelectedValue" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:HDOConnectionString %>" SelectCommand="SELECT DISTINCT [Facility_Name], [Facility_Type], [Location], [ContactPerson], [Status], [Phone], [City] FROM [FacilityLocations] ORDER BY [Facility_Name]"></asp:SqlDataSource>
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
Me.GridView1.DataSource = SqlDataSource2
Me.GridView1.DataBind()
End If
End Sub
Any help is appreciated, thanks.
-
Nov 9th, 2021, 11:53 AM
#2
Re: Filter Grid View with 2 drop down menus
Originally Posted by kawi6rr
I have a simple gridview that needs to shows the facilities in our system. The Gridview also needs to be filtered by two dropdown menus.
- Menu 1: facility type
- Menu 2: facility status
I can get the gridview to bind on load and I can get the gridview to bind one dropdown menu after update control but I can’t get it to do both. I need to get it to filter on whichever dropdown menu is being selected, either by facility or by status.
I’m not passing the value from the dropdown list properly, how do I do this?
Code:
Protected Sub DropDownList1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DropDownList1.SelectedIndexChanged
Dim srtfacType As String = Me.DropDownList1.SelectedValue
If IsPostBack Then
Me.GridView1.DataSource = sqlFacType
Me.GridView1.DataBind()
End If
'If Me.DropDownList1.Text = facType Then
'Me.GridView1.DataSource = SqlDataSource1
'Me.GridView1.DataBind()
'End If
End Sub
Protected Sub DropDownList2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DropDownList2.SelectedIndexChanged
Dim srtfacStatus As String = Me.DropDownList2.SelectedValue
If IsPostBack Then
Me.GridView1.DataSource = Sql
Me.GridView1.DataBind()
End If
End Sub
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True"></asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:HDOConnectionString %>" SelectCommand="SELECT DISTINCT [Facility_Name], [Facility_Type], [Location], [ContactPerson], [Status], [Phone], [City] FROM [FacilityLocations] WHERE ([Facility_Type] = @Facility_Type) ORDER BY [Facility_Type]">
<SelectParameters>
<asp:ControlParameter ControlID="DropDownList1" Name="Facility_Type" PropertyName="SelectedValue" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:HDOConnectionString %>" SelectCommand="SELECT DISTINCT [Facility_Name], [Facility_Type], [Location], [ContactPerson], [Status], [Phone], [City] FROM [FacilityLocations] ORDER BY [Facility_Name]"></asp:SqlDataSource>
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
Me.GridView1.DataSource = SqlDataSource2
Me.GridView1.DataBind()
End If
End Sub
Any help is appreciated, thanks.
Instead of using SqlDataSource control to bind data to a GridView control, I would suggest a better option which is to retrieve data from the database using sql statements, use the dropdown's selected value as the parameter of the sql statement and store the retrieved information to a List or DataTable object. The List and DataTable objects will be assigned to the GridView's DataSource property.
- kgc
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|