title: GridView Paging, unable to get the correct Datakey value
body: <p>GridView</p>
  
  <pre><code>&lt;asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
      AllowSorting="True" PagerSettings-Position="TopAndBottom"
      PagerSettings-Mode="Numeric" PageSize="40" CellPadding="4" DataSourceID="dsEquipmentGridView"
      ForeColor="#333333" GridLines="Horizontal" Style="font-size: x-small" AutoGenerateColumns="False"
      DataKeyNames="IREF" OnRowEditing="GridView1_RowEditing" OnRowUpdated="GridView1_RowUpdated"
      OnSorted="GridView1_Sorted" OnSorting="GridView1_Sorting" OnPageIndexChanged="GridView1_PageIndexChanged1"
      OnPageIndexChanging="GridView1_PageIndexChanging" OnSelectedIndexChanged="GridView1_SelectedIndexChanged"
      OnSelectedIndexChanging="GridView1_SelectedIndexChanging" OnRowCommand="GridView1_RowCommand"
      BorderColor="Black" BorderStyle="Solid" BorderWidth="1px" 
      OnRowCancelingEdit="GridView1_RowCancelingEdit" onload="GridView1_Load" 
      ondatabound="GridView1_DataBound"&gt;
      &lt;PagerSettings Position="TopAndBottom" /&gt;
      &lt;RowStyle BackColor="#F7F6F3" ForeColor="#333333" /&gt;
      &lt;Columns&gt;
   &lt;asp:CommandField ShowDeleteButton="False" ShowSelectButton="true" EditText="QuickEdit"
       HeaderText="Manage" SelectText="Manage" /&gt;
  </code></pre>
  
  <p>For the first page loaded, it shows the correct DataKey value if I click on the command field.</p>
  
  <p>However if I change to the next page of results, upon selecting a record the corresponding value is incorrect. It seems to keep the previous page information. How do I overcome this?</p>
  
  <p>EDIT:</p>
  
  <p>In the GridView1_SelectedIndexChanged method, I used the following:</p>
  
  <pre><code>    // Determine the index of the selected row.
      int index = GridView1.SelectedIndex;
  
      // Display the primary key value of the selected row.
      HttpContext.Current.Response.Write("The primary key value of the selected row is " + GridView1.DataKeys[index].Value.ToString() + ".&lt;br&gt;");
  
      GridViewRow row = GridView1.Rows[index];
  
      int rowindex = row.RowIndex;
      HttpContext.Current.Response.Write("rowindex-&gt; " + rowindex.ToString() + "&lt;br&gt;");
  
      int ID = (int)GridView1.DataKeys[row.DataItemIndex - (GridView1.PageIndex * GridView1.PageSize)].Value;
  
      HttpContext.Current.Response.Write("row.DataItemIndex" + ID.ToString()+"&lt;br&gt;");
  
      int Userid = Convert.ToInt32(GridView1.DataKeys[index].Value);
  
      HttpContext.Current.Response.Write("Userid" + Userid.ToString() + "&lt;br&gt;");
  </code></pre>
  
  <p>I am unable to get the correct value after paging.</p>