Fixed it myself!
The problem was. While using the asynchronous model the page rendering was finished before the asynchronous call was finished. So when the result was there the page would have been submitted to the client!
You must use the polling model to fix this problem:
so my codebehind is now (and will be further perfectionized):
public partial class WebForm1 : System.Web.UI.Page
{
bool finishedCall = false;
int pageNumber = 0;
delegate void updateGridViewDelegate(DataTable aTable, int pageNumber);
string query = "select top 100 * from [dbo].[FactInternetSales]";
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
ShootTheCall();
}
}
private void ShootTheCall()
{
DBConnecting.DataObjects.DataObjects src = new DBConnecting.DataObjects.DataObjects();
src.ReturnDataTable += new DBConnecting.EventHandlers.DataTableEventArgs.DataTableEventHandler(HandleDataTable);
src.AsyncDataTableStart(query, CommandType.Text);
}
private void HandleDataTable(object sender, DataTableEventArgs e)
{
DataTable table = e.DataTableInfo;
updateGridViewDelegate updDel = new updateGridViewDelegate(updateGridView);
updDel.Invoke(e.DataTableInfo, pageNumber);
}
private void updateGridView(DataTable aTable, int pageNumber)
{
GridView1.DataSource = aTable;
if (GridView1.AllowPaging)
GridView1.PageIndex = pageNumber;
GridView1.DataBind();
Label lblPageNr = (Label)Page.Master.FindControl("lblPageNr");
if (lblPageNr != null)
lblPageNr.Text = string.Format("PageNr set = {0}", pageNumber);
finishedCall = true;
}
protected void GridView1_OPIC(object sender, GridViewPageEventArgs e)
{
pageNumber = e.NewPageIndex;
ShootTheCall();
while (!finishedCall)
{
}
}