Не понимаю, что я здесь делаю, но мой список не фильтрует данные по выбору. Когда страница загружается, она получает данные в соответствии с выбранным городом с главной страницы. Это работает, но когда я применяю другой фильтр, он не изменяется. На странице у меня есть несколько фильтров.Фильтровать список строк с помощью выбора радиообмена
VB
Private Sub hospitals_PreRender(sender As Object, e As EventArgs) Handles Me.PreRender
Try
Dim citySelector As DropDownList = Page.Master.FindControl("locationSelector")
If Session("masterLocation") Is Nothing Then
citySelector.Text = "Pune"
Else
citySelector.Text = Session("masterLocation").ToString()
End If
query = "SELECT hospitalID, name, address, thumbnail, knownFor, mondayFrom, mondayTo, consultancyFees FROM hospitals where city like '" + citySelector.SelectedItem.ToString + "%'"
Dim cmd As New MySqlCommand(query, con)
cmd.CommandTimeout = 120
Dim da As New MySqlDataAdapter(cmd)
Dim table As New DataTable
da.Fill(table)
ViewState("Data") = table
hospitals.DataSource = table
hospitals.DataBind()
'countItems.Text = String.Format(table.Rows(0)("dataCount"))
Catch ex As Exception
Response.Write(ex)
End Try
End Sub
Private Sub areasList_SelectedIndexChanged(sender As Object, e As EventArgs) Handles areasList.SelectedIndexChanged
'locationFilter.Text = areasList.SelectedItem.ToString
Try
ViewState("Data") = ""
If areasList.SelectedValue <> "All" And servicesList.SelectedValue <> "All" And facilitiesList.SelectedValue <> "All" And paymentsList.SelectedValue <> "All" Then
query = "SELECT * FROM hospitals where address Like '" + areasList.SelectedItem.ToString + "%' and services Like '%" + servicesList.SelectedItem.ToString + "%' and facilities Like '%" + facilitiesList.SelectedItem.ToString + "%'"
ElseIf areasList.SelectedValue = "All" And servicesList.SelectedValue <> "All" And facilitiesList.SelectedValue <> "All" And paymentsList.SelectedValue <> "All" Then
query = "SELECT * FROM hospitals where services Like '%" + servicesList.SelectedItem.ToString + "%' and facilities Like '%" + facilitiesList.SelectedItem.ToString + "%' and payment Like '%" + paymentsList.SelectedItem.ToString + "%'"
ElseIf areasList.SelectedValue <> "All" And servicesList.SelectedValue = "All" And facilitiesList.SelectedValue <> "All" And paymentsList.SelectedValue <> "All" Then
query = "SELECT * FROM hospitals where areaName Like '%" + areasList.SelectedItem.ToString + "%' and facilities Like '%" + facilitiesList.SelectedItem.ToString + "%' and payment Like '%" + paymentsList.SelectedItem.ToString + "%'"
ElseIf areasList.SelectedValue <> "All" And servicesList.SelectedValue <> "All" And facilitiesList.SelectedValue = "All" And paymentsList.SelectedValue <> "All" Then
query = "SELECT * FROM hospitals where areaName Like '%" + areasList.SelectedItem.ToString + "%' and services Like '%" + servicesList.SelectedItem.ToString + "%' and payment Like payment Like '%" + paymentsList.SelectedItem.ToString + "%'"
ElseIf areasList.SelectedValue <> "All" And servicesList.SelectedValue <> "All" And facilitiesList.SelectedValue <> "All" And paymentsList.SelectedValue = "All" Then
query = "SELECT * FROM hospitals where areaName Like '%" + areasList.SelectedItem.ToString + "%' and services Like '%" + servicesList.SelectedItem.ToString + "%' and facilities Like '%" + facilitiesList.SelectedItem.ToString + "%'"
ElseIf areasList.SelectedValue <> "All" And servicesList.SelectedValue = "All" And facilitiesList.SelectedValue = "All" And paymentsList.SelectedValue = "All" Then
query = "SELECT * FROM hospitals where areaName Like '%" + areasList.SelectedItem.ToString + "%'"
ElseIf areasList.SelectedValue = "All" And servicesList.SelectedValue <> "All" And facilitiesList.SelectedValue = "All" And paymentsList.SelectedValue = "All" Then
query = "SELECT * FROM hospitals where services Like '%" + servicesList.SelectedItem.ToString + "%'"
ElseIf areasList.SelectedValue = "All" And servicesList.SelectedValue = "All" And facilitiesList.SelectedValue <> "All" And paymentsList.SelectedValue = "All" Then
query = "SELECT * FROM hospitals where facilities Like '%" + facilitiesList.SelectedItem.ToString + "%'"
ElseIf areasList.SelectedValue = "All" And servicesList.SelectedValue = "All" And facilitiesList.SelectedValue = "All" And paymentsList.SelectedValue <> "All" Then
query = "SELECT * FROM hospitals where payment Like '%" + paymentsList.SelectedItem.ToString + "%'"
ElseIf areasList.SelectedValue <> "All" And servicesList.SelectedValue <> "All" And facilitiesList.SelectedValue = "All" And paymentsList.SelectedValue = "All" Then
query = "SELECT * FROM hospitals where areaName Like '%" + areasList.SelectedItem.ToString + "%' and services Like '%" + servicesList.SelectedItem.ToString + "%'"
ElseIf areasList.SelectedValue = "All" And servicesList.SelectedValue = "All" And facilitiesList.SelectedValue = "All" And paymentsList.SelectedValue = "All" Then
query = "SELECT * FROM hospitals WHERE status Like 'Active'"
End If
Dim cmd As New MySqlCommand(query, con)
Dim da As New MySqlDataAdapter(cmd)
Dim table As New DataTable
da.Fill(table)
ViewState("Data") = table
hospitals.DataSource = table
hospitals.DataBind()
Catch ex As Exception
'Response.Write(ex)
End Try
End Sub
Попробуйте отладить, сообщите мне, что произойдет. –
Я думаю, что проблема - это ваш метод PreRender. Поскольку он выполняется каждый раз, когда страница загружается, она обновляет список со старым списком. Итак, что вы можете сделать, просто переместите этот код на ваш Page_Load и введите в * if (! IsPostBack) * блок (предпочтительнее переходить к методу Page_Load) – Khazratbek