
2.用向导创建其成员变量CTreeCtrl
m_trdisktree
3.创建TVN_
SELCHANGED响应事件,Edit
Code键
4.代码如下
void
CDiskCataDlg::OnSelchangedTrdisktree(NMHDR*
pNMHDR,
LRESULT*
pResult)
{
NM_TREEVIEW*
pNMTreeView
=
(NM_TREEVIEW*)pNMHDR
CFileFind
filefd
HTREEITEM
parent
HTREEITEM
rootitem=m_trdisktree.GetSelectedItem()
if(m_trdisktree.GetChildItem(rootitem))return
parent=rootitem
CString
rootstr=m_trdisktree.GetItemText(rootitem)
CString
temp
CString
lstr
if(rootstr.Find("\\")==2)
{
lstr.Format("%s*.*",rootstr)
}
else
{
CString
strparent
while(1)
{
parent=m_trdisktree.GetParentItem(parent)
strparent=m_trdisktree.GetItemText(parent)
if(strparent.Find("\\")==2)
goto
end
temp+=strparent
temp+="\\"
}
end:
CString
root=m_trdisktree.GetItemText(parent)
lstr.Format("%s%s%s\\*.*",root,temp,rootstr)
}
BOOL
bfinded=filefd.FindFile(lstr)
while(bfinded)
{
bfinded=filefd.FindNextFile()
CString
filepath
if(filefd.IsDirectory()&&!filefd.IsDots()){
SHGetFileInfo(filefd.GetFilePath(),0,&fileinfo,sizeof(fileinfo),
SHGFI_ICON)
imindex=imlst.Add(fileinfo.hIcon)
m_trdisktree.InsertItem(filefd.GetFileName(),imindex,imindex,rootitem)
}
}
*pResult
=
0
}
看完这段代码,就一定会啦
这类东东可以用2种方式解决1,用假的树 ,就是 页面上用
<div>大类</div>
<ur>
<li>小类 </li>
<li>小类 </li>
<li>小类 </li>
</ur>
然后用Repeater去嵌套,2个Repeater嵌套出来,可以达到这个效果
2,用真正的树控件
这样子就好做了,只要绑定树就好了
比如:(列举个例子,我用的是ORM ,你可以换掉的)
#region 创建SubjectTreeView
/// <summary>
/// 绑定SubjectTreeView
/// </summary>
public void BangDTreeView()
{
//清楚原来节点
SubjectTreeView.Nodes.Clear()
List<ZhszSubjectEntity>subjectList = null
using (var adapter = new DataAccessAdapter())
{
LinqMetaData linq = new LinqMetaData(adapter)
var List = from subject in linq.ZhszSubject
orderby subject.FSort
select subject
subjectList = List.ToList<ZhszSubjectEntity>()
var depSubject = subjectList.Where(d =>d.FParentID == null).OrderBy(d =>d.FSort)
foreach (var item in depSubject)
{
TreeNode newNode = null
newNode = CreateNode(item.FName, item.FParentID.ToString(), "Folders.gif", true)
newNode.Name = item.FName
BindChildDepartmentTreeView(subjectList, (Guid)item.FID, newNode)
SubjectTreeView.Nodes.Add(newNode)
}
}
}
#endregion
#region 创建树节点
/// <summary>
/// 创建树节点
/// </summary>
/// <param name="treeName">名称</param>
/// <param name="tag">tag</param>
/// <param name="icon">图标</param>
/// <param name="expanded">是否展开</param>
/// <returns></returns>
public static TreeNode CreateNode(string treeName, string tag, string icon, bool expanded)
{
TreeNode node = new TreeNode()
node.Text = treeName
if (!string.IsNullOrEmpty(icon))
{
node.Image = new IconResourceHandle(icon)
}
node.Tag = tag
node.Name = tag
node.IsExpanded = expanded
return node
}
#endregion
#region 创建子节点
/// <summary>
/// 创建子节点
/// </summary>
/// <param name="SubjectList">集合</param>
/// <param name="FParentID">上级级id</param>
/// <param name="node"></param>
public static void BindChildDepartmentTreeView(List<ZhszSubjectEntity>SubjectList, Guid FParentID, TreeNode node)
{
TreeNode depChildNode
var depSubject = SubjectList.Where(d =>d.FParentID == FParentID).OrderBy(d =>d.FSort)
foreach (var depItem in depSubject)
{
depChildNode = CreateNode(depItem.FName, depItem.FParentID.ToString(), "sub.gif", false)
depChildNode.Name = depItem.FName
node.Nodes.Add(depChildNode)
}
}
#endregion
#region 树节点的点击事件
private void SubjectTreeView_AfterSelect(object sender, TreeViewEventArgs e)
{
if (e.Node.Tag.ToString() == "")
{
BangDGridView(null)
}
else
{
Guid fpid = new Guid(e.Node.Tag.ToString())
BangDGridView(fpid)
_Fpid = fpid
}
}
#endregion
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)