以TreeView形式显示时间

效果图:

     ///   <summary>
    
///  绑定时间
    
///   </summary>
    
///   <param name="dtSource"> 数据源 </param>
    
///   <param name="columnName"> 用于显示时间列的列称 </param>
    
///   <param name="sort"> 排序方式:desc,asc </param>
     private   void  BindTreeViewDate(DataTable dtSource,  string  columnName,  string  sort)
    {
        DataTable dt 
=   new  DataTable();
        DataColumn[] cols 
=   new  DataColumn[ 1 ];

        cols[
0 =   new  DataColumn();
        cols[
0 ].ColumnName  =   " sortDate " ;
        dt.Columns.Add(cols[
0 ]);

        dt.PrimaryKey 
=  cols;

        
foreach  (DataRow row  in  dtSource.Select( " 1=1 " , columnName  +   "   "   +  sort))
        {
            
object  obj  =  row[columnName];
            
if  (dt.Rows.Find(obj)  ==   null )
            {
                dt.Rows.Add(obj);
            }
        }

        tvDate.Nodes.Clear();
        TreeNode nodeSelect 
=   new  TreeNode();
        TreeNode nodeSelectM 
=   new  TreeNode();
        TreeNode nodeSelectY 
=   new  TreeNode();

        
if  (dt  !=   null   &&  dt.Rows.Count  >   0 )
        {
            
// 绑定第一行时间
            TreeNode tn1  =   new  TreeNode();
            TreeNode tn2 
=   new  TreeNode();
            TreeNode tn3 
=   new  TreeNode();
            DateTime date 
=  Convert.ToDateTime(dt.Rows[ 0 ][ 0 ].ToString());

            tn1.Text 
=  date.Year.ToString()  +   " " ;
            tn1.ToolTip 
=  date.ToShortDateString();
            tvDate.Nodes.Add(tn1);

            tn2.Text 
=  date.Month.ToString()  +   " " ;
            tn2.ToolTip 
=  date.ToShortDateString();
            tn1.ChildNodes.Add(tn2);

            tn3.Text 
=  date.Day.ToString()  +   " " ;
            tn3.ToolTip 
=  date.ToShortDateString();
            tn2.ChildNodes.Add(tn3);

            dt.Rows.RemoveAt(
0 );  // 移除第一行

            
foreach  (DataRow row  in  dt.Rows)
            {
                DateTime dateNext 
=  Convert.ToDateTime(row[ 0 ].ToString());

                
// 绑定年
                 if  ( string .Compare(dateNext.Year.ToString()  +   " " , tn1.Text)  !=   0 )
                {
                    tn1 
=   new  TreeNode();
                    tn2 
=   new  TreeNode();
                    tn3 
=   new  TreeNode();

                    tn1.Text 
=  dateNext.Year.ToString()  +   " " ;
                    tn1.ToolTip 
=  dateNext.ToShortDateString();
                    tvDate.Nodes.Add(tn1);

                    tn2.Text 
=  dateNext.Month.ToString()  +   " " ;
                    tn2.ToolTip 
=  dateNext.ToShortDateString();
                    tn1.ChildNodes.Add(tn2);

                    tn3.Text 
=  dateNext.Day.ToString()  +   " " ;
                    tn3.ToolTip 
=  dateNext.ToShortDateString();
                    tn2.ChildNodes.Add(tn3);

                    
if  (nodeSelectY  ==   null   &&  dateNext.Year.ToString()  ==  DateTime.Now.Year.ToString())
                    {
                        nodeSelectY 
=  tn1;
                    }
                }
                
// 绑定月
                 else   if  ( string .Compare(dateNext.Month.ToString()  +   " " , tn2.Text)  !=   0 )
                {
                    tn2 
=   new  TreeNode();
                    tn3 
=   new  TreeNode();

                    tn2.Text 
=  dateNext.Month.ToString()  +   " " ;
                    tn2.ToolTip 
=  dateNext.ToShortDateString();
                    tn1.ChildNodes.Add(tn2);

                    tn3.Text 
=  dateNext.Day.ToString()  +   " " ;
                    tn3.ToolTip 
=  dateNext.ToShortDateString();
                    tn2.ChildNodes.Add(tn3);

                    
if  (nodeSelectM  ==   null   &&  dateNext.ToString( " yyyyMM " ==  DateTime.Now.ToString( " yyyyMM " ))
                    {
                        nodeSelectM 
=  tn2;
                    }
                }
                
// 绑定日
                 else
                {
                    tn3 
=   new  TreeNode();

                    tn3.Text 
=  dateNext.Day.ToString()  +   " " ;
                    tn3.ToolTip 
=  dateNext.ToShortDateString();
                    tn2.ChildNodes.Add(tn3);

                    
if  (dateNext.ToShortDateString()  ==  DateTime.Now.ToShortDateString())
                    {
                        nodeSelect 
=  tn3;
                    }
                }
            }
        }

        tvDate.CollapseAll();
    }
以上时ASP.NET中代码,如果在WinForm中使用,请将“ToolTip”改为“Tag”,将“ChildNodes”改为“Nodes”。

转载于:https://www.cnblogs.com/EasyData/archive/2009/10/26/1590047.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值