title: dataTable.Rowfilter always returning first row
body: <p>I have 2 datagridviews alongside each other, displaying what should be same data from two sources. I test for differences and want to apply a filter to only show those rows where differences exist. I create a DataView for each. From the code below you will see that one DGV is setup using a binding source (dancesbindingsource) and the other sets the DataView directly as the DataSource.  I test for differences and then set the "view_flag" data column of each and then set the filters - using BindingSource.filter on one and DataView.RowFilter on the other.</p>
  
  <p>This all works fine EXCEPT that in the DataView case the first row of the DataTable shows every time, no matter whether the view_flag is on or off. The BindingSource filter works fine. I cannot fathom why.</p>
  
  <p>There appeared to be a similar problem posted 6 months or so ago relating to dataTable.defaultView.RowFilter, but the solution suggested seems to be what I am actually doing and getting the same phenomena.</p>
  
  <p>Any suggestions would be greatly appreciated.</p>
  
  <pre><code>private void CheckDanceDataDifferences()
      {
          // Look at common ids in both databases and all data values
          // Start by creating a couple of useful data views
          DataView DOview = new DataView(dotable, "", "DanceID", DataViewRowState.CurrentRows);
          DataView DMview = new DataView(dmrecords.DMdanceTable, "", "id", DataViewRowState.CurrentRows);
          dancesBindingSource.DataSource = DOview;
          DMdgv.DataSource = DMview;
          DataGridViewRowCollection DOrows = dancesDataGridView.Rows;
          DataGridViewRowCollection DMrows = DMdgv.Rows;
          List&lt;int&gt; err_ids = new List&lt;int&gt;();
          foreach (DataGridViewRow row in DOrows) {
              int idmrow = DMview.Find(row.Cells["DanceID"].Value);
              if(idmrow &gt;= 0) {
                  bool[] err = CompareDataDifferences(row, DMrows[idmrow]);
                  if(err != null) { 
                      err_ids.Add(idmrow);
                  }
              }
          }
  
          if (err_ids.Count == 0) {
              MessageBox.Show("No data differences found");
              return;
          }
  
          int i, j, irow, nerr = err_ids.Count;
          // Note - all view flags have been initialised to 0
          // Now we set set the flags of those we want to see
          for (i = 0; i &lt; nerr; i++) {
              irow = err_ids[i];
              DOrows[irow].Cells["view_flag"].Value = 1;
              DMrows[irow].Cells["view_flag"].Value = 1;
          }
          dancesBindingSource.Filter = "view_flag=1"
          DMview.RowFilter = "view_flag=1";
      }
  </code></pre>