2011-08-04 5 views
0

グリッドビューの行を介してデータセットの値をループし、その行が一致する場合はテキストの色を入れようとしています。gridview PageIndexChanging問題

以下のコードは、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 
+0

でID照合を行います? – Waqas

答えて

2

MainPageGridView_RowDataBoundイベントをIDと一致させるのはなぜですか?私は以下のようなものに、あなたのオリジナルのコードをリファクタリングしている、チェックして、それが動作するかどうか私に教えてください:

'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 
+0

返信いただきありがとうございますが、どこで 'myDataset'の読み込みを行うのですか? –

+0

どこでもmyDatasetNewをロードする前に – Waqas

+0

あなたのメソッドで動作させることができませんでしたので、私は自分のコードをrowdataboundに合わせて少し変更しました。 –