title: How to get all visible rows of DevExpress xtragrid
body: <p>I have a DevExpress (14.2) XtraGrid with <code>GridView</code>. In one column I want to show a value which is complex to generate. So I am doing this async. If I load 10000 rows for example, I don't want to start 10000 async calls for each row to generate the complex value. I thought it would be nice, if just the visible rows are getting updated. Visible means that they are actual displayed to the user. </p>
  
  <p>This is what i tried so far (Datasource = List):</p>
  
  <pre><code>if (this._myDataSource != null)
  {
      foreach (MyObject object in this._myDataSource)
      {
          int rowHandle = this.myGridView.GetRowHandle(this._myDataSource.IndexOf(object));
          var rowState = this.myGridView.IsRowVisible(rowHandle);
  
          switch (rowState) {
              case RowVisibleState.Visible:
                  object.LoadAsyncData;
                  break;
          }
      }
  }
  </code></pre>
  
  <p>If the <code>GridView.Layout</code> event fires, I execute the above code. So if the user is sorting or grouping this will be executed.</p>
  
  <p>But there are some curious behaviours. Some Rows seems to be not visible at the time the event fires. Further the Layout-Event dont fire on scrolling the <code>GridView</code>.</p>
  
  <p><a href="https://i.stack.imgur.com/xkKcp.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/xkKcp.png" alt="enter image description here"></a></p>
  
  <p>The last two rows are not loaded, but they are visible.<br>
  Someone know how to handle this and how to extend this for scrolling?</p>