I tried the following in my Page_Load event based on search in forum:
protected void Page_Load(object sender, EventArgs e)
{
...
// make call to get data
List<QMarkRow> qmarkRows = qmd.getData(
sessFilter,
sessSort,
pageSize);
// set datasource
grdList.DataSource = qmarkRows;
grdList.VirtualItemCount = qmd.Count;
grdList.PageSize = pageSize;
grdList.CurrentPageIndex = qmd.PageIndex;
grdList.DataBind();
// tried below in GrdList_PreRender event still error
if (sessSort != null && sessSort.Length > 0)
{
// create GridSortExpression and add to grid
// format of sessSort: Sort<Coln> <ASC|DESC>
GridSortExpression gse = new GridSortExpression();
int index = sessSort.IndexOf(" ");
gse.FieldName = sessSort.Substring(4, index - 4);
gse.SortOrder = sessSort.Substring(index + 1).Equals("ASC") ? GridSortOrder.Ascending : GridSortOrder.Descending;
grdList.MasterTableView.SortExpressions.Add(gse);
grdList.MasterTableView.Rebind();
}
...
}
I get error on Rebind() call:
IndexOutOfRangeException was unhandled by user code
cannot find column Col1
Col1 is defined in grid:
<telerik:RadGrid
ID="grdList" runat="server"
EnableViewState="false"
Height="328px"
AllowPaging="true"
AllowCustomPaging="true"
AllowSorting="true"
AllowFilteringByColumn="true"
AutoGenerateColumns="False"
PageSize="12"
Skin="WebBlue" OnPreRender="GrdList_PreRender">
<MasterTableView
ClientDataKeyNames="Col1,Col2,Col3,Col4,Col5,Col6,Col7,Col8,Col9,Col10"
EnableViewState="False">
<Columns>
<telerik:GridBoundColumn DataField="Col1" UniqueName="Col1"
DataType="System.String"
HeaderText="COL1" Visible="false" DataFormatString="<nobr>{0}</nobr>" >
<HeaderStyle Width="80px" HorizontalAlign="left" />
<ItemStyle Width="80px" HorizontalAlign="left" />
</telerik:GridBoundColumn>
...
This grid is defined in user control and everything else works except setting sortExpression.
protected void Page_Load(object sender, EventArgs e)
{
...
// make call to get data
List<QMarkRow> qmarkRows = qmd.getData(
sessFilter,
sessSort,
pageSize);
// set datasource
grdList.DataSource = qmarkRows;
grdList.VirtualItemCount = qmd.Count;
grdList.PageSize = pageSize;
grdList.CurrentPageIndex = qmd.PageIndex;
grdList.DataBind();
// tried below in GrdList_PreRender event still error
if (sessSort != null && sessSort.Length > 0)
{
// create GridSortExpression and add to grid
// format of sessSort: Sort<Coln> <ASC|DESC>
GridSortExpression gse = new GridSortExpression();
int index = sessSort.IndexOf(" ");
gse.FieldName = sessSort.Substring(4, index - 4);
gse.SortOrder = sessSort.Substring(index + 1).Equals("ASC") ? GridSortOrder.Ascending : GridSortOrder.Descending;
grdList.MasterTableView.SortExpressions.Add(gse);
grdList.MasterTableView.Rebind();
}
...
}
I get error on Rebind() call:
IndexOutOfRangeException was unhandled by user code
cannot find column Col1
Col1 is defined in grid:
<telerik:RadGrid
ID="grdList" runat="server"
EnableViewState="false"
Height="328px"
AllowPaging="true"
AllowCustomPaging="true"
AllowSorting="true"
AllowFilteringByColumn="true"
AutoGenerateColumns="False"
PageSize="12"
Skin="WebBlue" OnPreRender="GrdList_PreRender">
<MasterTableView
ClientDataKeyNames="Col1,Col2,Col3,Col4,Col5,Col6,Col7,Col8,Col9,Col10"
EnableViewState="False">
<Columns>
<telerik:GridBoundColumn DataField="Col1" UniqueName="Col1"
DataType="System.String"
HeaderText="COL1" Visible="false" DataFormatString="<nobr>{0}</nobr>" >
<HeaderStyle Width="80px" HorizontalAlign="left" />
<ItemStyle Width="80px" HorizontalAlign="left" />
</telerik:GridBoundColumn>
...
This grid is defined in user control and everything else works except setting sortExpression.