0

ページの読み込み時に、GridView にレコードを入力します。次に、レコードを検索する検索機能を作成しました。GridView は、実際には検索テキストに基づいて更新されています。問題は、行を選択すると、GridView に検索に基づくリストではなく、すべてのレコードが表示されることです。

コードは次のとおりです。

Imports MySql.Data.MySqlClient

Public Class Main_Admin
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim myConnection As MySqlConnection
        Dim myDataAdapter As MySqlDataAdapter
        Dim myDataSet As DataSet

        Dim strSQL As String
        'Dim iRecordCount As Integer

        myConnection = New MySqlConnection("server=localhost; user id=root; password=admin; database=db; pooling=false;")

        strSQL = "SELECT emp_id AS 'Employee ID', emp_sname AS Surname, emp_fname AS 'First Name', emp_mname AS 'Middle Name', tbl_emp_cat.cat_name AS 'Category', nature AS 'Nature of Employment' FROM tbl_employee JOIN tbl_emp_cat ON tbl_employee.emp_cat = tbl_emp_cat.emp_cat;"

        myDataAdapter = New MySqlDataAdapter(strSQL, myConnection)
        myDataSet = New DataSet()
        myDataAdapter.Fill(myDataSet, "mytable")


        GridView1.DataSource = myDataSet
        GridView1.DataBind()
        myConnection.Close()
    End Sub

    Protected Sub GridView1_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GridView1.RowDataBound
        e.Row.Cells(0).Width = 100
        e.Row.Cells(0).Attributes.CssStyle("text-align") = "center"
        e.Row.Cells(1).Width = 100
        e.Row.Cells(2).Width = 100
        e.Row.Cells(3).Width = 100
        e.Row.Cells(4).Width = 100
        If (e.Row.RowType = DataControlRowType.DataRow) Then
            'e.Row.Attributes("onmouseover") = "this.style.cursor='hand';"
            e.Row.Attributes("onmouseout") = "this.style.textDecoration='none';"
            e.Row.Attributes("onclick") = ClientScript.GetPostBackClientHyperlink(Me.GridView1, "Select$" & Convert.ToString(e.Row.RowIndex))
            e.Row.Attributes.Add("onmouseover", "this.style.cursor='hand';this.style.textDecoration='underline';")
            'e.Row.Attributes.Add("onmouseout", "this.style.textDecoration='none';")
            'e.Row.Attributes.Add("onclick", ClientScript.GetPostBackClientHyperlink(Me.GridView1, Page.ClientScript.GetPostBackEventReference(GridView1, e.Row.RowIndex)))
            ' "Select$" + e.Row.RowIndex.ToString())
        End If
    End Sub
    Protected Sub GridView1_PageIndexChanging(sender As Object, e As GridViewPageEventArgs)
        GridView1.SelectedIndex = -1
    End Sub

    Private Sub search_Click(sender As Object, e As EventArgs) Handles search.Click
        Dim myConnection As MySqlConnection
        Dim myDataAdapter As MySqlDataAdapter
        Dim myDataSet As DataSet

        Dim strSQL As String
        'Dim iRecordCount As Integer

        myConnection = New MySqlConnection("server=localhost; user id=root; password=admin; database=db; pooling=false;")

        strSQL = "SELECT emp_id AS 'Employee ID', emp_sname AS Surname, emp_fname AS 'First Name', emp_mname AS 'Middle Name', tbl_emp_cat.cat_name AS 'Category', nature AS 'Nature of Employment' FROM tbl_employee JOIN tbl_emp_cat ON tbl_employee.emp_cat = tbl_emp_cat.emp_cat WHERE emp_sname LIKE '%" & search_text.Text + "%';"

        myDataAdapter = New MySqlDataAdapter(strSQL, myConnection)
        myDataSet = New DataSet()
        myDataAdapter.Fill(myDataSet, "mytable")


        GridView1.DataSource = myDataSet
        GridView1.DataBind()
        myConnection.Close()
    End Sub
End Class
4

1 に答える 1

1

コードを一目見ただけで、ページの読み込みでこの行が欠落していることがわかります

 If Not Page.IsPostBack Then
    ->put your code here
 End if

ページが読み込まれるたびにグリッド ビューが更新され、フィルタリング機能が失われます。これがお役に立てば幸いです。

于 2013-02-28T08:22:24.233 に答える