为TreeView正色

这段时间需要用到树形菜单,理所当然的想到了treeview,构建菜单数据表-读取并生成节点...
一切都很顺利,但是最后应用到页面上面的时候,颜色问题让我头痛了半天:
selected节点和hover节点的颜色是在丑陋(如果是浅色的底色还好一些,可是项目中是黑色的底色)
于是这两中节点上面的字就变的难以辨认(如果显示器老化或颜色比较暗的话就是一片漆黑了...)
无论怎样设置selectedstyle和hoverstyle都无济于事,最后只好在csdn发贴求助,呵呵没过多久就没孟子老大
一语点醒-“修改htc中的相关样式”,我怎么就没想到
打开/webctrl_client/1_0/treeview.htc文件,好家伙3000行... ...  既然是混色的感觉,应该是alpha吧,搜之...
找到如下几行
[code]
var oFilter = oItem.filters.item("DXImageTransform.Microsoft.Alpha");
 if (oFilter)
 {
       oFilter.opacity *= 2;   //这里改成oFilter.opacity=100,还有个地方是oFilter.opacity /= 2,同样100
}

g_styles["hoverstyle"] = "color: highlighttext; background-color:highlight; filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50,style=0);";   //这里的opacity也是100
[/code]
他们分别是默认的样式和改变的样式,
呵呵,一切ok了;当时弄起来可没这么快:
http://community.csdn.net/Expert/topic/3443/3443524.xml?temp=.9843408

另外附上一个树的生成算法:
[code]
private void creatdv()
  {
   string c="select classID,class,parentID from Aclass order by orderID";
   db d=new db(str_conn,c);  //自己写的一个数据库链接类
   d.initialdbconnection();
   d.objsconn.Open();
   SqlDataReader sdr=d.objscomm.ExecuteReader();
   DataTable dt = new DataTable("table");
   dt.Columns.Add("classID",System.Type.GetType("System.String"));
   dt.Columns.Add("class",System.Type.GetType("System.String"));
   dt.Columns.Add("pID",System.Type.GetType("System.String"));

   while(sdr.Read())
   {
    DataRow dr=dt.NewRow();
    dr["classID"]=sdr["classID"].ToString();
    dr["class"]=sdr["class"].ToString();
    dr["pID"]=sdr["parentID"].ToString();
    dt.Rows.Add(dr);
   }
   d.objsconn.Close();
   DataView dv=dt.DefaultView;
   CreateTree(tv.Nodes,0,dv);
  }

  private void CreateTree(TreeNodeCollection classNodeCollection ,int pID,DataView dv)
  {  
      dv.RowFilter="PID="+pID;
      int tmpParentFolderID=0;
      foreach(DataRowView drv in  dv)
      {
           TreeNode tn=new TreeNode();
          tn.ID=drv.Row["classID"].ToString();
         tn.NodeData=drv.Row["classID"].ToString();
         tn.Text=drv.Row["class"].ToString().Trim();
          tmpParentFolderID=Int32.Parse(drv.Row["pID"].ToString().Trim());
         classNodeCollection.Add(tn);
         CreateTree(classNodeCollection[classNodeCollection.Count - 1].Nodes,Int32.Parse(tn.ID),dv);
      }      
  }
[/code]
主要是一个递归函数


ps:第一次在自己的blog里写东西,看了很多大侠的blog获益良多,也不能让自己的blog总是空着了,算是开荒了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值