To simplify for you, here is (most of) the markup. As you can see it is pretty straight forward and simple, but it doesn't work:
<body>
<form id="form1" runat="server">
<telerik:RadScriptManager ID="RadScriptManager1" runat="server">
<Scripts>
<asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.Core.js" />
<asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQuery.js" />
</Scripts>
</telerik:RadScriptManager>
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
</telerik:RadAjaxManager>
<telerik:RadSkinManager ID="RadSkinManager1" Runat="server" Skin="WebBlue">
</telerik:RadSkinManager>
<telerik:RadFormDecorator ID="RadFormDecorator" runat="server" DecoratedControls="All">
</telerik:RadFormDecorator>
<div>
<telerik:RadGrid ID="DocumentGrid" runat="server" Width="100%" OnNeedDataSource="DocumentGrid_NeedDataSource" AllowPaging="true" AllowSorting="true" OnSortCommand="DocumentGrid_SortCommand">
</telerik:RadGrid>
</div>
</form>
</body>
</html>
And the code behind:
namespace WebApplication1
{
[Serializable]
public class Document
{
public int Id { get; set; }
public string ObjectId { get; set; }
public string ArchiveCode { get; set; }
public DateTime CreateTime { get; set; }
}
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
List<Document> documents = new List<Document>();
DateTime theTime = DateTime.Now;
documents.Add(new Document() { Id = 1, ObjectId = "12345", ArchiveCode = "X", CreateTime = theTime });
documents.Add(new Document() { Id = 2, ObjectId = "12345", ArchiveCode = "Y", CreateTime = theTime.AddDays(1) });
documents.Add(new Document() { Id = 3, ObjectId = "12346", ArchiveCode = "Y", CreateTime = theTime });
ViewState["Documents"] = documents;
DocumentGrid.PageSize = 3;
DocumentGrid.AutoGenerateColumns = false;
DocumentGrid.MasterTableView.RetrieveAllDataFields = false;
DocumentGrid.MasterTableView.AllowMultiColumnSorting = true;
GridSortExpression sortExpression = new GridSortExpression() { FieldName = "Id", SortOrder = GridSortOrder.Descending };
DocumentGrid.MasterTableView.SortExpressions.AddSortExpression(sortExpression);
}
}
protected void DocumentGrid_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
{
DocumentGrid.Columns.Clear();
DocumentGrid.Columns.Add(new GridBoundColumn() { DataField = "Id", HeaderText = "Id", UniqueName = "DocumentIdColumn", SortExpression = "Id" });
DocumentGrid.Columns.Add(new GridBoundColumn() { DataField = "ObjectId", HeaderText = "ObjectId", UniqueName = "DocumentObjectIdColumn", SortExpression = "ObjectId" });
DocumentGrid.Columns.Add(new GridBoundColumn() { DataField = "CreateTime", HeaderText = "CreateTime", UniqueName = "DocumentCreateTimeColumn", SortExpression = "CreateTime" });
DocumentGrid.Columns.Add(new GridBoundColumn() { DataField = "ArchiveCode", HeaderText = "ArchiveCode", UniqueName = "DocumentArchiveCodeColumn", SortExpression = "ArchiveCode" });
DocumentGrid.DataSource = (List<Document>)ViewState["Documents"];
}
protected void DocumentGrid_SortCommand(object source, GridSortCommandEventArgs e)
{
GridSortExpression sortExpr = new GridSortExpression();
switch (e.OldSortOrder)
{
case GridSortOrder.None:
sortExpr.FieldName = e.SortExpression;
sortExpr.SortOrder = GridSortOrder.Descending;
e.Item.OwnerTableView.SortExpressions.AddSortExpression(sortExpr);
break;
case GridSortOrder.Ascending:
sortExpr.FieldName = e.SortExpression;
sortExpr.SortOrder = DocumentGrid.MasterTableView.AllowNaturalSort ? GridSortOrder.None : GridSortOrder.Descending;
e.Item.OwnerTableView.SortExpressions.AddSortExpression(sortExpr);
break;
case GridSortOrder.Descending:
sortExpr.FieldName = e.SortExpression;
sortExpr.SortOrder = GridSortOrder.Ascending;
e.Item.OwnerTableView.SortExpressions.AddSortExpression(sortExpr);
break;
}
e.Canceled = true;
DocumentGrid.Rebind();
}
}
}
Can someone please tell me what is wrong with this code?
<body>
<form id="form1" runat="server">
<telerik:RadScriptManager ID="RadScriptManager1" runat="server">
<Scripts>
<asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.Core.js" />
<asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQuery.js" />
</Scripts>
</telerik:RadScriptManager>
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
</telerik:RadAjaxManager>
<telerik:RadSkinManager ID="RadSkinManager1" Runat="server" Skin="WebBlue">
</telerik:RadSkinManager>
<telerik:RadFormDecorator ID="RadFormDecorator" runat="server" DecoratedControls="All">
</telerik:RadFormDecorator>
<div>
<telerik:RadGrid ID="DocumentGrid" runat="server" Width="100%" OnNeedDataSource="DocumentGrid_NeedDataSource" AllowPaging="true" AllowSorting="true" OnSortCommand="DocumentGrid_SortCommand">
</telerik:RadGrid>
</div>
</form>
</body>
</html>
And the code behind:
namespace WebApplication1
{
[Serializable]
public class Document
{
public int Id { get; set; }
public string ObjectId { get; set; }
public string ArchiveCode { get; set; }
public DateTime CreateTime { get; set; }
}
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
List<Document> documents = new List<Document>();
DateTime theTime = DateTime.Now;
documents.Add(new Document() { Id = 1, ObjectId = "12345", ArchiveCode = "X", CreateTime = theTime });
documents.Add(new Document() { Id = 2, ObjectId = "12345", ArchiveCode = "Y", CreateTime = theTime.AddDays(1) });
documents.Add(new Document() { Id = 3, ObjectId = "12346", ArchiveCode = "Y", CreateTime = theTime });
ViewState["Documents"] = documents;
DocumentGrid.PageSize = 3;
DocumentGrid.AutoGenerateColumns = false;
DocumentGrid.MasterTableView.RetrieveAllDataFields = false;
DocumentGrid.MasterTableView.AllowMultiColumnSorting = true;
GridSortExpression sortExpression = new GridSortExpression() { FieldName = "Id", SortOrder = GridSortOrder.Descending };
DocumentGrid.MasterTableView.SortExpressions.AddSortExpression(sortExpression);
}
}
protected void DocumentGrid_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
{
DocumentGrid.Columns.Clear();
DocumentGrid.Columns.Add(new GridBoundColumn() { DataField = "Id", HeaderText = "Id", UniqueName = "DocumentIdColumn", SortExpression = "Id" });
DocumentGrid.Columns.Add(new GridBoundColumn() { DataField = "ObjectId", HeaderText = "ObjectId", UniqueName = "DocumentObjectIdColumn", SortExpression = "ObjectId" });
DocumentGrid.Columns.Add(new GridBoundColumn() { DataField = "CreateTime", HeaderText = "CreateTime", UniqueName = "DocumentCreateTimeColumn", SortExpression = "CreateTime" });
DocumentGrid.Columns.Add(new GridBoundColumn() { DataField = "ArchiveCode", HeaderText = "ArchiveCode", UniqueName = "DocumentArchiveCodeColumn", SortExpression = "ArchiveCode" });
DocumentGrid.DataSource = (List<Document>)ViewState["Documents"];
}
protected void DocumentGrid_SortCommand(object source, GridSortCommandEventArgs e)
{
GridSortExpression sortExpr = new GridSortExpression();
switch (e.OldSortOrder)
{
case GridSortOrder.None:
sortExpr.FieldName = e.SortExpression;
sortExpr.SortOrder = GridSortOrder.Descending;
e.Item.OwnerTableView.SortExpressions.AddSortExpression(sortExpr);
break;
case GridSortOrder.Ascending:
sortExpr.FieldName = e.SortExpression;
sortExpr.SortOrder = DocumentGrid.MasterTableView.AllowNaturalSort ? GridSortOrder.None : GridSortOrder.Descending;
e.Item.OwnerTableView.SortExpressions.AddSortExpression(sortExpr);
break;
case GridSortOrder.Descending:
sortExpr.FieldName = e.SortExpression;
sortExpr.SortOrder = GridSortOrder.Ascending;
e.Item.OwnerTableView.SortExpressions.AddSortExpression(sortExpr);
break;
}
e.Canceled = true;
DocumentGrid.Rebind();
}
}
}
Can someone please tell me what is wrong with this code?