以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”。
posted on 2009-10-26 16:18  迷你软件  阅读(390)  评论(0编辑  收藏  举报

本网站绝大部分资源来源于Internet,本站所有作品版权归原创作者所有!!如有以下内容:章节错误、非法内容、作者署名出错、版权疑问、作品内容有违相关法律等请及时与我联系. 我将在第一时间做出响应!本站所有文章观点不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。