o任飘零o

别人给了你一滴水,你给了别人些什么?
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

DataWindow点击列标题排序算法

Posted on 2013-02-04 15:08  o任飘零o  阅读(261)  评论(0)    收藏  举报
#region 定义全局变量        

        /// <summary>
         /// 表头列前缀
        /// </summary>
         private string m_strColumnNameHeader = "headercolumn";
         /// <summary>
         /// 当前排序的列
        /// </summary>
         private string m_strCurrentSortColumn = "1";
         /// <summary>
         /// 当前排序模式 A-升序;D-降序
        /// </summary>
         private System.Windows.Forms.SortOrder m_enmCurrentSortOrder = System.Windows.Forms.SortOrder.Descending;
         /// <summary>
         /// 换列默认排序模式 A-升序;D-降序
        /// </summary>
         private System.Windows.Forms.SortOrder m_enmDefaultSortOrder = System.Windows.Forms.SortOrder.Descending;

        #endregion

        #region DataWindow点击列标题排序
        /// <summary>
         /// DataWindow点击列标题排序
        /// </summary>
         /// <param name="p_dwcView"></param>
         internal void DataWindowSetSort(Sybase.DataWindow.DataWindowControl p_dwcView)   //数据窗口排序   
         {
             try
             {
                 string strOrderColumn = string.Empty;
                 string strCurObj = string.Empty;
                 int intCurRowNumber = 0;
                 strCurObj = p_dwcView.ObjectUnderMouse.Gob.Name;   //得出objectName   
                 intCurRowNumber = p_dwcView.ObjectUnderMouse.RowNumber;   //得出当前Row   
                 if (p_dwcView.Describe(strCurObj + ".Band") == "header")
                 {
                     string strColumnName = p_dwcView.Describe(strCurObj + ".Name").ToLower();
                     System.Windows.Forms.SortOrder enmSortOrder = System.Windows.Forms.SortOrder.Descending;
                     if (intCurRowNumber == 0 && strColumnName.StartsWith(m_strColumnNameHeader))
                     {
                         strOrderColumn = strColumnName.Replace(m_strColumnNameHeader, "");
                         if (strOrderColumn == "1")//点击第一列不进行排序
                        {
                             return;
                         }
                         p_dwcView.Modify(m_strColumnNameHeader + m_strCurrentSortColumn + ".Text='" + p_dwcView.Describe(m_strColumnNameHeader + m_strCurrentSortColumn + ".Text").Replace("", "").Replace("", "") + "'");
                         if (strOrderColumn == m_strCurrentSortColumn)
                         {
                             if (m_enmCurrentSortOrder == System.Windows.Forms.SortOrder.Ascending)
                             {
                                 m_enmCurrentSortOrder = System.Windows.Forms.SortOrder.Descending;
                             }
                             else
                             {
                                 m_enmCurrentSortOrder = System.Windows.Forms.SortOrder.Ascending;
                             }
                             
                         }
                         else
                         {
                             m_enmCurrentSortOrder = m_enmDefaultSortOrder;
                             m_strCurrentSortColumn = strOrderColumn;
                         }
                         enmSortOrder = m_enmCurrentSortOrder;
                         string strSortOrder = string.Empty;
                         if (enmSortOrder == System.Windows.Forms.SortOrder.Ascending)
                         {
                             p_dwcView.Modify(strCurObj + ".Text='" + p_dwcView.Describe(strCurObj + ".Text") + " ↑'"); 
                             strSortOrder = "A";
                         }
                         else
                         {
                             p_dwcView.Modify(strCurObj + ".Text='" + p_dwcView.Describe(strCurObj + ".Text") + " ↓'"); 
                             strSortOrder = "D";
                         }
                         p_dwcView.SetSort("#" + strOrderColumn + "  " + strSortOrder);
                         p_dwcView.Sort();
                     }
                 }
             }
             catch
             {
             }
         }
         #endregion