0

からの複数の値を使用してテーブルからデータをフィルタリングすることが可能かどうか疑問に思っていましたcheckboxlistか? (or any other way)と がcheckboxlistありgridview、ボックスをオンにすると、グリッドビューに正しいデータが表示されますが、複数の値をチェックしようとすると問題が発生します。最初にチェックされた値を検索し、残りを無視するようです。あなたはそれが簡単だと思うでしょう!おそらくそうです。これが私の試みです。

コードビハインド

Imports System.Data

Imports System.Data.SqlClient

Partial Class Default2

Inherits System.Web.UI.Page

Dim strSQL As New System.Text.StringBuilder


    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Page.IsPostBack Then
            Dim i As Integer, c As Integer = 0
            Dim strParams As String = ""
            For i = 0 To Me.CheckBoxList1.Items.Count - 1
                If CheckBoxList1.Items(i).Selected Then
                    c += 1
                    If c = 1 Then
                        strParams = "(Keyword.Keyword = '" & CheckBoxList1.Items(i).Text & "')"
                    Else
                        strParams &= " AND (Keyword.Keyword = '" & CheckBoxList1.Items(i).Text & "')"
                    End If
                End If
            Next
            strSQL.Append("SELECT Project.*")
            strSQL.Append(" FROM Keyword INNER JOIN Project ON Keyword.ProjID = Project.ProjID")
            strSQL.Append(" WHERE" & strParams)
            FillGridView()



        End If
    End Sub


    Private Sub FillGridView()

        Dim strMyConn As String = "Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\FYPMS_DB.mdf;Integrated Security=True"
        Using MyConn As New SqlClient.SqlConnection(strMyConn)
            MyConn.Open()
            Dim cmd As New SqlClient.SqlCommand(strSQL.ToString, MyConn)
            cmd.Connection = MyConn
            cmd.CommandType = CommandType.Text
            Try
                Using dr As SqlClient.SqlDataReader = cmd.ExecuteReader
                    Dim dt As New DataTable
                    dt.Load(dr)


                    Me.GridView1.DataSource = dt
                    Me.GridView1.DataBind()
                End Using
                If Me.GridView1.Visible = False Then Me.GridView1.Visible = True


            Catch ex As Exception
                Me.GridView1.Visible = False
            End Try
        End Using
    End Sub


    Protected Sub CheckBoxList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim i As Integer, c As Integer = 0
        Dim strParams As String = ""
        For i = 0 To Me.CheckBoxList1.Items.Count - 1
            If CheckBoxList1.Items(i).Selected Then
                c += 1
                If c = 1 Then
                    strParams = "(Keyword.Keyword = '" & CheckBoxList1.Items(i).Text & "')"
                Else
                    strParams &= " AND (Keyword.Keyword = '" & CheckBoxList1.Items(i).Text & "')"
                End If
            End If
        Next
        If c <> 0 Then
            strSQL.Append("SELECT Project.*")
            strSQL.Append(" FROM Keyword INNER JOIN Project ON Keyword.ProjID = Project.ProjID")
            strSQL.Append(" WHERE" & strParams)
        End If




    End Sub
End Class
4

1 に答える 1