2016-04-04 7 views
0

私はlistviewとonPageをロードして、すべてのデータを表示します。私は4種類のRedioButtonList(エリア、サービス、ファシリティ、支払い)を持っています。今度は最初のフィルタを適用すると仮定します。つまり、それはうまく動作しますが、その後はサービスフィルタを適用し、領域が空白になります。選択した地域で選択されたサービスが見つかるはずです。デバッグの後、私は実際にリストビューで複数のフィルタを適用する

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

以下のようにされて渡すものをクエリ見えるが、それは機能に続き、この

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

のように行くべきである私は、各フィルタで実行しています

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 

IをIndexChanged間違ってやって助けてください。

句を使用すると、あなたのドロップダウンボックスのいずれかにインデックスを変更するたびにリセットされているあなたの

答えて

0

。すべてのドロップダウンボックスに共通する関数を作成し、各ドロップダウンボックスの値をループし、すべての変数でどこを作成する必要があります。

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 
関連する問題