I have setup a RadGird with a custom skin and pager. I have have copied the example for programming the sort order but the only problem once it is applied it does not update the grid until i go to the next page or per page.
I have the gird on a contect page and a scriptmanger and ajaxmanager on the master file
Here is my gird code
<telerik:RadGrid ID="rgdAgentOverview" runat="server" OnNeedDataSource="rgdAgentOverview_NeedDataSource"
AllowPaging="True" OnItemDataBound="rgdAgentOverview_ItemDataBound"
AutoGenerateColumns="False" GridLines="None"
Skin="Resolve" EnableEmbeddedSkins="False" EnableEmbeddedBaseStylesheet="False"
OnSelectedIndexChanged="rgdAgentOverview_SelectedIndex"
OnItemCommand="rgdAgentOverview_ItemCommand" AllowSorting="True"
AllowCustomPaging="True" >
<HeaderContextMenu EnableEmbeddedBaseStylesheet="False"
EnableEmbeddedSkins="False">
</HeaderContextMenu>
<MasterTableView CellPadding="0" CellSpacing="0" DataKeyNames="AgentID"
GridLines="Vertical" PageSize="30" AllowCustomSorting="true">
<Columns>
<telerik:GridTemplateColumn DataField="ColourID" UniqueName="TemplateColumn">
<ItemStyle HorizontalAlign="Center" Width="9px" />
<ItemTemplate>
<div ID="ColourBlock" runat="server" style="height:20px; width: 9px;">
</div>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridBoundColumn DataField="AgentID" HeaderText="AgentID"
UniqueName="column1">
<ItemStyle HorizontalAlign="Center" Width="88px" />
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="AgentName" HeaderText="Agent Name"
UniqueName="column2">
<ItemStyle HorizontalAlign="Center" Width="182px" />
</telerik:GridBoundColumn>
<telerik:GridTemplateColumn DataField="Position" HeaderText="Position"
UniqueName="Position">
<ItemTemplate>
<div style="float: left; margin-top: 2px; margin-left: 10px;">
<rec:RoundedHolder ID="rhbPosition" PositionID='<%# Eval("Position") %>' Opacity="75" DisplayRound="false" Width="12px" Height="22px"
Value="" runat="server" />
</div>
<div style="float:left;">
<%# Eval("PositionText") %>
</div>
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" Width="124px" />
</telerik:GridTemplateColumn>
<telerik:GridBoundColumn DataField="Rate" HeaderText="Rate"
UniqueName="column5">
<ItemStyle HorizontalAlign="Center" Width="69px" />
</telerik:GridBoundColumn>
<telerik:GridTemplateColumn DataField="ColourID" UniqueName="TemplateColumn">
<ItemStyle BorderStyle="None" HorizontalAlign="Center" Width="9px" />
</telerik:GridTemplateColumn>
</Columns>
<EditFormSettings>
<EditColumn CancelImageUrl="Cancel.gif" EditImageUrl="Edit.gif"
InsertImageUrl="Update.gif" UpdateImageUrl="Update.gif">
</EditColumn>
</EditFormSettings>
<PagerTemplate>
<div class="GirdFooter">
<div class="GirdFooterInner">
<div class="GirdFooterPageCount">
Current Page : <%# (int)DataBinder.Eval(Container, "Paging.CurrentPageIndex") + 1 %>
of
<%# DataBinder.Eval(Container, "Paging.PageCount")%>
</div>
<div class="GirdFooterPre">
<asp:Image ID="ibnPre" CssClass="GirdFooterImage" runat="server" ImageUrl="~/Images/Previous.png" />
<asp:LinkButton ID="lnkPre" runat="server" OnClick="lnkPre_Click">Previous</asp:LinkButton>
</div>
<span style="float: left; font-size: 12px; margin-top: -2px; margin-right: 5px;">|</span>
<div class="GirdFooterNext">
<asp:LinkButton ID="lnkNext" runat="server" OnClick="lnkNext_Click" >Next</asp:LinkButton>
<asp:Image ID="ibnNext" CssClass="GirdFooterImage" runat="server" ImageUrl="~/Images/Next.png" />
</div>
</div>
</div>
</PagerTemplate>
</MasterTableView>
<ClientSettings EnableRowHoverStyle="true" EnablePostBackOnRowClick="true" >
</ClientSettings>
<FilterMenu EnableEmbeddedBaseStylesheet="False" EnableEmbeddedSkins="False">
</FilterMenu>
</telerik:RadGrid>
Here is my c# code
protected void rgdAgentOverview_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
var dc = new ResolveDataClassDataContext();
try
{
var AgentsData = (from c in dc.Members
select new
{
AgentID = c.UserID,
AgentName = c.MemberProfiles.First().Firstname + " " + c.MemberProfiles.First().Surname,
Position = c.MemberType.ID,
PositionText = c.MemberType.TypeOfMember,
Rate = c.MemberType.Commission,
}).ToList();
DataTable CurrentAgents = MyExtenders.FilterResults(AgentsData, true);
rgdAgentOverview.DataSource = CurrentAgents;
}
catch (Exception ex)
{
Admin CurrentMaster = (Admin)Page.Master;
CurrentMaster.DisplayError(ex.Message);
}
}
protected void ibnSort_Click(object sender, ImageClickEventArgs e)
{
if (rbnAgentID.Checked)
{
lblSortNumber.Text = "1.";
lblCurrentSortOrder.Text = "Agent ID";
}
else if (rbnAgentName.Checked)
{
lblSortNumber.Text = "2.";
lblCurrentSortOrder.Text = "Agent Name";
}
else if (rbnAgentPos.Checked)
{
lblSortNumber.Text = "3.";
lblCurrentSortOrder.Text = "Position";
}
else if (rbnRate.Checked)
{
lblSortNumber.Text = "4.";
lblCurrentSortOrder.Text = "Rate";
}
rgdAgentOverview.MasterTableView.SortExpressions.Clear();
GridSortExpression expression = new GridSortExpression();
expression.FieldName = "Rate";
if (ddlSortDirection.SelectedItem.Text == "Ascending")
{
ibnArrowUp.ImageUrl = "~/Images/CaseIdArrow.jpg";
expression.SortOrder = GridSortOrder.Ascending;
}
else
{
ibnArrowUp.ImageUrl = "~/Images/CaseIdArrowDown.jpg";
expression.SortOrder = GridSortOrder.Descending;
}
rgdAgentOverview.MasterTableView.SortExpressions.AddSortExpression(expression);
rgdAgentOverview.Rebind();
rgdAgentOverview.CurrentPageIndex = rgdAgentOverview.CurrentPageIndex + 1;
rgdAgentOverview.Rebind();
}
Thank you for any help
I have the gird on a contect page and a scriptmanger and ajaxmanager on the master file
Here is my gird code
<telerik:RadGrid ID="rgdAgentOverview" runat="server" OnNeedDataSource="rgdAgentOverview_NeedDataSource"
AllowPaging="True" OnItemDataBound="rgdAgentOverview_ItemDataBound"
AutoGenerateColumns="False" GridLines="None"
Skin="Resolve" EnableEmbeddedSkins="False" EnableEmbeddedBaseStylesheet="False"
OnSelectedIndexChanged="rgdAgentOverview_SelectedIndex"
OnItemCommand="rgdAgentOverview_ItemCommand" AllowSorting="True"
AllowCustomPaging="True" >
<HeaderContextMenu EnableEmbeddedBaseStylesheet="False"
EnableEmbeddedSkins="False">
</HeaderContextMenu>
<MasterTableView CellPadding="0" CellSpacing="0" DataKeyNames="AgentID"
GridLines="Vertical" PageSize="30" AllowCustomSorting="true">
<Columns>
<telerik:GridTemplateColumn DataField="ColourID" UniqueName="TemplateColumn">
<ItemStyle HorizontalAlign="Center" Width="9px" />
<ItemTemplate>
<div ID="ColourBlock" runat="server" style="height:20px; width: 9px;">
</div>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridBoundColumn DataField="AgentID" HeaderText="AgentID"
UniqueName="column1">
<ItemStyle HorizontalAlign="Center" Width="88px" />
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="AgentName" HeaderText="Agent Name"
UniqueName="column2">
<ItemStyle HorizontalAlign="Center" Width="182px" />
</telerik:GridBoundColumn>
<telerik:GridTemplateColumn DataField="Position" HeaderText="Position"
UniqueName="Position">
<ItemTemplate>
<div style="float: left; margin-top: 2px; margin-left: 10px;">
<rec:RoundedHolder ID="rhbPosition" PositionID='<%# Eval("Position") %>' Opacity="75" DisplayRound="false" Width="12px" Height="22px"
Value="" runat="server" />
</div>
<div style="float:left;">
<%# Eval("PositionText") %>
</div>
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" Width="124px" />
</telerik:GridTemplateColumn>
<telerik:GridBoundColumn DataField="Rate" HeaderText="Rate"
UniqueName="column5">
<ItemStyle HorizontalAlign="Center" Width="69px" />
</telerik:GridBoundColumn>
<telerik:GridTemplateColumn DataField="ColourID" UniqueName="TemplateColumn">
<ItemStyle BorderStyle="None" HorizontalAlign="Center" Width="9px" />
</telerik:GridTemplateColumn>
</Columns>
<EditFormSettings>
<EditColumn CancelImageUrl="Cancel.gif" EditImageUrl="Edit.gif"
InsertImageUrl="Update.gif" UpdateImageUrl="Update.gif">
</EditColumn>
</EditFormSettings>
<PagerTemplate>
<div class="GirdFooter">
<div class="GirdFooterInner">
<div class="GirdFooterPageCount">
Current Page : <%# (int)DataBinder.Eval(Container, "Paging.CurrentPageIndex") + 1 %>
of
<%# DataBinder.Eval(Container, "Paging.PageCount")%>
</div>
<div class="GirdFooterPre">
<asp:Image ID="ibnPre" CssClass="GirdFooterImage" runat="server" ImageUrl="~/Images/Previous.png" />
<asp:LinkButton ID="lnkPre" runat="server" OnClick="lnkPre_Click">Previous</asp:LinkButton>
</div>
<span style="float: left; font-size: 12px; margin-top: -2px; margin-right: 5px;">|</span>
<div class="GirdFooterNext">
<asp:LinkButton ID="lnkNext" runat="server" OnClick="lnkNext_Click" >Next</asp:LinkButton>
<asp:Image ID="ibnNext" CssClass="GirdFooterImage" runat="server" ImageUrl="~/Images/Next.png" />
</div>
</div>
</div>
</PagerTemplate>
</MasterTableView>
<ClientSettings EnableRowHoverStyle="true" EnablePostBackOnRowClick="true" >
</ClientSettings>
<FilterMenu EnableEmbeddedBaseStylesheet="False" EnableEmbeddedSkins="False">
</FilterMenu>
</telerik:RadGrid>
Here is my c# code
protected void rgdAgentOverview_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
var dc = new ResolveDataClassDataContext();
try
{
var AgentsData = (from c in dc.Members
select new
{
AgentID = c.UserID,
AgentName = c.MemberProfiles.First().Firstname + " " + c.MemberProfiles.First().Surname,
Position = c.MemberType.ID,
PositionText = c.MemberType.TypeOfMember,
Rate = c.MemberType.Commission,
}).ToList();
DataTable CurrentAgents = MyExtenders.FilterResults(AgentsData, true);
rgdAgentOverview.DataSource = CurrentAgents;
}
catch (Exception ex)
{
Admin CurrentMaster = (Admin)Page.Master;
CurrentMaster.DisplayError(ex.Message);
}
}
protected void ibnSort_Click(object sender, ImageClickEventArgs e)
{
if (rbnAgentID.Checked)
{
lblSortNumber.Text = "1.";
lblCurrentSortOrder.Text = "Agent ID";
}
else if (rbnAgentName.Checked)
{
lblSortNumber.Text = "2.";
lblCurrentSortOrder.Text = "Agent Name";
}
else if (rbnAgentPos.Checked)
{
lblSortNumber.Text = "3.";
lblCurrentSortOrder.Text = "Position";
}
else if (rbnRate.Checked)
{
lblSortNumber.Text = "4.";
lblCurrentSortOrder.Text = "Rate";
}
rgdAgentOverview.MasterTableView.SortExpressions.Clear();
GridSortExpression expression = new GridSortExpression();
expression.FieldName = "Rate";
if (ddlSortDirection.SelectedItem.Text == "Ascending")
{
ibnArrowUp.ImageUrl = "~/Images/CaseIdArrow.jpg";
expression.SortOrder = GridSortOrder.Ascending;
}
else
{
ibnArrowUp.ImageUrl = "~/Images/CaseIdArrowDown.jpg";
expression.SortOrder = GridSortOrder.Descending;
}
rgdAgentOverview.MasterTableView.SortExpressions.AddSortExpression(expression);
rgdAgentOverview.Rebind();
rgdAgentOverview.CurrentPageIndex = rgdAgentOverview.CurrentPageIndex + 1;
rgdAgentOverview.Rebind();
}
Thank you for any help