radgrid Group & sort

6 posts, 0 answers
  1. Erik
    Erik avatar
    314 posts
    Member since:
    Feb 2008

    Posted 10 Nov 2008 Link to this post

     Hi all,

    I have a grid with 3 columns, a name and a date and a calculated (sql) field witch displays terms like "last week, this week, today, yesterday, next week, last year, etc..."

    When i use a grouping al works fine, only the group sorting is alphabetical (of course) and thus the wrong order. I would like the grid toe group, but sort the groups logical, on the date field.

    any ideas?

    Thanks in advance!
  2. Yavor
    Admin
    Yavor avatar
    11 posts

    Posted 12 Nov 2008 Link to this post

    Hi Proovit,

    Can you please provide some more details on the calculated column? Is it calculated in the database (it resides there), or is it calculated via a separate query, or perhaps dynamic code when the grid is created?

    Regards,
    Yavor
    the Telerik team

    Check out Telerik Trainer, the state of the art learning tool for Telerik products.
  3. UI for ASP.NET Ajax is Ready for VS 2017
  4. Erik
    Erik avatar
    314 posts
    Member since:
    Feb 2008

    Posted 18 Nov 2008 Link to this post

    Hi Yavor,

    The calculation is a database stored procedure en produces the texts like "yesterday", "Tomorrow", "Las week", etc.

    Regards,

    Erik
  5. Yavor
    Admin
    Yavor avatar
    11 posts

    Posted 21 Nov 2008 Link to this post

    Hi Proovit,

    In this case, you will only be able to sort in the groups in ascending and descending order, based on the field coming from the database. Another option is to include another column, but not display it, which would contain the "correct" sorting values for the original column, and set the sort expression to it.

    Regards,
    Yavor
    the Telerik team

    Check out Telerik Trainer, the state of the art learning tool for Telerik products.
  6. Regin
    Regin avatar
    1 posts
    Member since:
    Aug 2012

    Posted 07 Aug 2012 Link to this post

    Hi Yovor,

    How to set the sort expression?

    Regards,
    Regin
  7. Joe
    Joe avatar
    1 posts
    Member since:
    Feb 2011

    Posted 14 Sep 2012 Link to this post

    Here is an example if anyone was having issues with this.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using Telerik.Web.UI;
    using System.Data;

    namespace WebApplication1
    {
      public partial class _Default : System.Web.UI.Page
      {
        public SortedList<string, int> sortingOrder;
        protected void Page_Load(object sender, EventArgs e)
        {
          ScriptManager sm = ScriptManager.GetCurrent(this.Page);
          if (sm == null)
          {
            sm = new ScriptManager();
            Page.Form.Controls.Add(sm);
          }

          RadGrid rg = new RadGrid();
          rg.ItemDataBound += new GridItemEventHandler(rg_ItemDataBound);
          Page.Form.Controls.Add(rg);

          DataTable dt = new DataTable();

          //Colmns
          dt.Columns.Add("Title");
          dt.Columns.Add("Notes");
          dt.Columns.Add("Person");
          dt.Columns.Add("Category");
          dt.Columns.Add("RowOrder");

          //Rows
          dt.Rows.Add("Open Task Item", "Ship something", "John Smith", "Orders");
          dt.Rows.Add("Another Task Item", "Ship something", "J Rogers", "Orders");
          dt.Rows.Add("Thank You", "Send thank you letter", "John Smith", "Misc");
          dt.Rows.Add("Thank you again", "The Store", "J Person", "Misc");
          dt.Rows.Add("Buy Items", "Buy Something", "The Store", "Purchases");
          dt.Rows.Add("Title", "Buy Something again", "The Store", "Purchases");
          dt.Rows.Add("Test", "Buy Something", "The Store", "Purchases");

          // Data Source for Sorting
          sortingOrder = new SortedList<string, int>();
          sortingOrder.Add("Orders", 1);
          sortingOrder.Add("Purchases", 2);
          sortingOrder.Add("Misc", 3);

          foreach (DataRow dr in dt.Rows)
          {
            int order;
            switch (dr["Category"].ToString())
            {
              case "Orders":
                sortingOrder.TryGetValue("Orders", out order);
                dr["RowOrder"] = order;
                break;
              case "Purchases":
                sortingOrder.TryGetValue("Purchases", out order);
                dr["RowOrder"] = order;
                break;
              case "Misc":
                sortingOrder.TryGetValue("Misc", out order);
                dr["RowOrder"] = order;
                break;
              default:
                break;
            }
          }

          rg.GroupingEnabled = true;
          rg.MasterTableView.GroupByExpressions.Add(new GridGroupByExpression("RowOrder Group By RowOrder"));

          rg.DataSource = dt;
          rg.DataBind();
        }
        protected void rg_ItemDataBound(object sender, GridItemEventArgs e)
        {
          //Change Header Test
          if (e.Item is GridGroupHeaderItem)
          {
            GridGroupHeaderItem i = e.Item as GridGroupHeaderItem;

            //Get the Value from the header
            int order = Convert.ToInt32(i.DataCell.Text.Replace("RowOrder: ", string.Empty));

            foreach (var r in sortingOrder)
            {
              if (order == r.Value)
                i.DataCell.Text = r.Key;
            }
          }
        }
      }
    }

Back to Top
UI for ASP.NET Ajax is Ready for VS 2017