这段时间需要用到树形菜单,理所当然的想到了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总是空着了,算是开荒了