gridView PageIndexChanging проблема - PullRequest
       23

gridView PageIndexChanging проблема

0 голосов
/ 04 августа 2011

Я пытаюсь перебрать значение набора данных по строкам в виде сетки и цвет текста, если эта строка совпадает.

Приведенный ниже код работает, однако всякий раз, когда я меняю страницу с помощью PageIndexChanging, и эта функция запускается снова, окраска больше не работает. Он все еще просматривает сетку, если есть совпадение, но эффекты не показаны.

        --variable initialization class instantiation--

        --code to connect to db here--

        mySQLCommand.CommandText = "SELECT ..."
        mySQLAdapter = New SqlDataAdapter(mySQLCommand)
        mySQLAdapter.Fill(myDataset)
        Me.MainPageGridView.DataSource = myDataset
        Me.MainPageGridView.DataBind()

        mySQLCommand.CommandText = "SELECT ... The ID's to be matched"
        mySQLAdapter = New SqlDataAdapter(mySQLCommand)
        mySQLAdapter.Fill(myDatasetNew)
        Me.MainPageGridView.DataSource = myDatasetNew

       For Each dataRow In myDataset.Tables(0).Rows
            thisID = dataRow("ID").ToString
            For Each gvRow In Me.MainPageGridView.Rows
                If gvRow.Cells(2).Text = thisID Then
                    For column = 0 To 14 Step 1
                        gvRow.Cells(column).ForeColor = Drawing.Color.RosyBrown
                    Next
                    Exit For
                End If
            Next
        Next

Ответы [ 2 ]

2 голосов
/ 04 августа 2011

Почему бы вам не использовать MainPageGridView_RowDataBound событие для соответствия идентификатору?Я повторно преобразовал ваш исходный код в нечто вроде ниже, пожалуйста, проверьте и дайте мне знать, если он работает:

'In DataBind or some other method
        'Load(myDataSet)
        mySQLCommand.CommandText = "SELECT ..."
        mySQLAdapter = New SqlDataAdapter(mySQLCommand)
        mySQLAdapter.Fill(myDataset)

        'Load myDatasetNew and bind it to grid
        mySQLCommand.CommandText = "SELECT ... The ID's to be matched"
        mySQLAdapter = New SqlDataAdapter(mySQLCommand)
        mySQLAdapter.Fill(myDatasetNew)
        Me.MainPageGridView.DataSource = myDatasetNew
        Me.MainPageGridView.DataBind()

и выполните сопоставление идентификатора в

Protected Sub MainPageGridView_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles MainPageGridView.RowDataBound
        If e.Row.RowType = DataControlRowType.DataRow Then
            Dim id As String = DataBinder.Eval(e.Row.DataItem, "ID") 'The name of ID column in "myDatasetNew"

            Dim dv As System.Data.DataView = myDataset.Tables(0).DefaultView
            dv.RowFilter = "ID = " & id

            If dv.Count > 0 Then 'id matches
                'Change foreclor of entire row
                e.Row.ForeColor = Drawing.Color.RosyBrown
            End If

        End If
    End Sub
1 голос
/ 04 августа 2011

Вам действительно необходимо выполнить сравнение данных в событии GridView.RowDataBound .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...