J
js
I am having a problem with a dynamicly added DataGrid that always shows
the first data page even the message in the DataGrid.PreRender shows
the correct datapage as the DropDownList control's SelectedIndex. The
DataGrid CurrentPageIndex is controlled by a DropDownList control.
Anyone knows what might be going wrong? Thanks.
The addDataGrid() is fired by the following 3 events:
private void btnLookup_Click(object sender, System.EventArgs e)
private void cboPager_SelectedIndexChanged(object sender, EventArgs e)
private void dgResult_SortCommand(object source,
DataGridSortCommandEventArgs e)
The datagrid has the following attributes:
private DataGrid addDataGrid()
{
dgResult = new DataGrid();
try
{
dgResult.ID = "dgResult";
dgResult.EnableViewState = true;
dgResult.CellSpacing = 0;
dgResult.AutoGenerateColumns = false;
dgResult.AllowSorting = true;
dgResult.PageSize = 50;
dgResult.AllowPaging = true;
dgResult.PagerStyle.Visible = false;
dgResult.AllowCustomPaging = true;
dgResult.DataBinding += new EventHandler(dgResult_DataBinding);
dgResult.PreRender += new EventHandler(dgResult_PreRender);
dgResult.ItemDataBound += new
DataGridItemEventHandler(dgResult_ItemDataBound);
dgResult.ItemCreated += new
DataGridItemEventHandler(dgResult_ItemCreated);
dgResult.SortCommand += new
DataGridSortCommandEventHandler(dgResult_SortCommand);
bindDataGrid();
}
catch(Exception ex)
{
showMessage(ex.GetType().ToString() + "<br/>" +
ex.Message + "<br/>" +
ex.StackTrace);
}
return dgResult;
}
private void bindDataGrid()
{
try
{
cForm = FindControl("frmReference");
oReference.referenceType = getReferenceTableName();
oReference.tableSchema = strTableSchema;
TextBox txtTypeValue = (TextBox) cForm.FindControl("txtTypeValue");
if (txtTypeValue != null)
oReference.referenceValue = oUtil.encodeIt(txtTypeValue.Text);
dgResult.DataSource = oReference.Lookup2();
intGridDataSourceRowCount = ((DataSet)
dgResult.DataSource).Tables[0].Rows.Count;
dgResult.CurrentPageIndex = intSelectedPageIndex;
dgResult.DataBind();
intPageCount = dgResult.PageCount;
dgResult.DataKeyField = getDataKeyField();
dgResult.Visible =true;
}
catch(Exception ex)
{
showMessage(ex.GetType().ToString() + "<br/>" +
ex.Message + "<br/>" +
ex.StackTrace);
}
}
private void dgResult_PreRender(object sender, EventArgs e)
{
//this just to confirm that the CurrentPageIndex is on the right
index
showMessage("(Prerender) CurrentPageIndex =" +
dgResult.CurrentPageIndex.ToString());
}
private void dgResult_DataBinding(object sender, EventArgs e)
{
dgResult.VirtualItemCount = intGridDataSourceRowCount;
}
private void cboPager_SelectedIndexChanged(object sender, EventArgs e)
{
intSelectedPageIndex = ((DropDownList) sender).SelectedIndex;
cForm = this.FindControl("frmReference");
RequiredFieldValidator cValidator = (RequiredFieldValidator)
cForm.FindControl("rfvTypeValue");
cValidator.Enabled = false;
addDataGrid();
}
the first data page even the message in the DataGrid.PreRender shows
the correct datapage as the DropDownList control's SelectedIndex. The
DataGrid CurrentPageIndex is controlled by a DropDownList control.
Anyone knows what might be going wrong? Thanks.
The addDataGrid() is fired by the following 3 events:
private void btnLookup_Click(object sender, System.EventArgs e)
private void cboPager_SelectedIndexChanged(object sender, EventArgs e)
private void dgResult_SortCommand(object source,
DataGridSortCommandEventArgs e)
The datagrid has the following attributes:
private DataGrid addDataGrid()
{
dgResult = new DataGrid();
try
{
dgResult.ID = "dgResult";
dgResult.EnableViewState = true;
dgResult.CellSpacing = 0;
dgResult.AutoGenerateColumns = false;
dgResult.AllowSorting = true;
dgResult.PageSize = 50;
dgResult.AllowPaging = true;
dgResult.PagerStyle.Visible = false;
dgResult.AllowCustomPaging = true;
dgResult.DataBinding += new EventHandler(dgResult_DataBinding);
dgResult.PreRender += new EventHandler(dgResult_PreRender);
dgResult.ItemDataBound += new
DataGridItemEventHandler(dgResult_ItemDataBound);
dgResult.ItemCreated += new
DataGridItemEventHandler(dgResult_ItemCreated);
dgResult.SortCommand += new
DataGridSortCommandEventHandler(dgResult_SortCommand);
bindDataGrid();
}
catch(Exception ex)
{
showMessage(ex.GetType().ToString() + "<br/>" +
ex.Message + "<br/>" +
ex.StackTrace);
}
return dgResult;
}
private void bindDataGrid()
{
try
{
cForm = FindControl("frmReference");
oReference.referenceType = getReferenceTableName();
oReference.tableSchema = strTableSchema;
TextBox txtTypeValue = (TextBox) cForm.FindControl("txtTypeValue");
if (txtTypeValue != null)
oReference.referenceValue = oUtil.encodeIt(txtTypeValue.Text);
dgResult.DataSource = oReference.Lookup2();
intGridDataSourceRowCount = ((DataSet)
dgResult.DataSource).Tables[0].Rows.Count;
dgResult.CurrentPageIndex = intSelectedPageIndex;
dgResult.DataBind();
intPageCount = dgResult.PageCount;
dgResult.DataKeyField = getDataKeyField();
dgResult.Visible =true;
}
catch(Exception ex)
{
showMessage(ex.GetType().ToString() + "<br/>" +
ex.Message + "<br/>" +
ex.StackTrace);
}
}
private void dgResult_PreRender(object sender, EventArgs e)
{
//this just to confirm that the CurrentPageIndex is on the right
index
showMessage("(Prerender) CurrentPageIndex =" +
dgResult.CurrentPageIndex.ToString());
}
private void dgResult_DataBinding(object sender, EventArgs e)
{
dgResult.VirtualItemCount = intGridDataSourceRowCount;
}
private void cboPager_SelectedIndexChanged(object sender, EventArgs e)
{
intSelectedPageIndex = ((DropDownList) sender).SelectedIndex;
cForm = this.FindControl("frmReference");
RequiredFieldValidator cValidator = (RequiredFieldValidator)
cForm.FindControl("rfvTypeValue");
cValidator.Enabled = false;
addDataGrid();
}