【问题标题】:applying multiple filters in listview在列表视图中应用多个过滤器
【发布时间】:2016-04-04 04:54:01
【问题描述】:

我有 listview 和 onPage 加载所有数据都显示在其中。为了过滤列表视图,我有 4 种类型的 RedioButtonList(区域、服务、设施、付款)。现在假设我应用第一个过滤器,即区域然后它工作正常,但之后我应用服务过滤器而不是区域变为空白。它应该在选定的区域找到选定的服务。调试后,我看到实际通过的查询如下

select * from table where areaName = '' and services = 'selected service'

但应该是这样的

select * from table where areaName = 'SelectedArea' and services = 'selected service'

我在每个过滤器 IndexChanged 上运行的以下函数

Private Sub getResult()
    Try
        Dim citySelector As DropDownList = Page.Master.FindControl("locationSelector")
        Dim where As String = String.Empty
        Session("Data") = Nothing
        If areasList.SelectedValue <> "All" Then
            where = "address like '%" & areasList.SelectedValue & "%'"
        End If

        If servicesList.SelectedValue <> "All" Then
            If String.IsNullOrEmpty(where) Then
                where = "serviceID like '%" & servicesList.SelectedValue.ToString & "%'"
            Else
                where &= "and serviceID like '" & servicesList.SelectedValue.ToString & "%'"
            End If
        End If

        If facilitiesList.SelectedValue <> "All" Then
            If String.IsNullOrEmpty(where) Then
                where = "facilities like '%" & facilitiesList.SelectedValue & "%'"
            Else
                where &= "and facilities like '" & facilitiesList.SelectedValue & "%'"
            End If
        End If

        If paymentsList.SelectedValue <> "All" Then
            If String.IsNullOrEmpty(where) Then
                where = "payment like '%" & paymentsList.SelectedValue.ToString & "%'"
            Else
                where &= "and payment like '%" & paymentsList.SelectedValue.ToString & "%'"
            End If
        End If

        Dim query As String = "SELECT hospitalID, name, address, thumbnail, knownFor, mondayFrom, mondayTo, consultancyFees FROM hospitals where city = '" + citySelector.SelectedItem.ToString + "' and status = 'active'"
        If Not String.IsNullOrEmpty(where) Then
            query &= " and " & where
        End If

        Dim cmd As New MySqlCommand(query, con)
        Dim da As New MySqlDataAdapter(cmd)
        Dim table As New DataTable
        da.Fill(table)
        Session("Data") = table
        hospitals.DataSource = table
        hospitals.DataBind()
    Catch ex As Exception
        Response.Write(ex)
    End Try
End Sub

我哪里做错了,请帮忙。

【问题讨论】:

    标签: mysql asp.net vb.net listview


    【解决方案1】:

    每次更改下拉框中的索引时,都会重置 where 子句。您需要创建一个对所有下拉框都通用的函数,该函数将遍历每个下拉框的值并创建一个包含所有变量的位置。

    dim where as string;        
    Private Sub changeWherestatement(sender As Object, e As EventArgs) Handles    ComboBox1.SelectedIndexChanged, ComboBox2.SelectedIndexChanged
    where=string.empty
     If areasList.SelectedValue <> "All" Then
            where = "address like '%" & areasList.SelectedValue & "%'"
        End If
    If servicesList.SelectedValue <> "All" Then
            If String.IsNullOrEmpty(where) Then
                where += " and serviceID like '%" & servicesList.SelectedValue.ToString & "%'"
            Else
                where += "and serviceID like '" & servicesList.SelectedValue.ToString & "%'"
            End If
        End If
    Etc
    
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-29
      • 1970-01-01
      • 2016-05-26
      • 1970-01-01
      • 2017-06-26
      • 2013-01-17
      相关资源
      最近更新 更多