坦白说不是不去理解,是任务太赶时间了,没空去理解(明天晚上搞不定扣钱。。)
数据库Pro_ST_ID Pro_ST_ParentID Pro_ST_Name
0 0 货品类别
1 0 全部
2 1 数码产品
3 1 建筑材料
4 1 劳保
tvGoodsClass 请问如何进行绑定?
private void BinDingGoodsClass(int ParentID, TreeNode pNode,DataTable dt)
{
DataView tmpDataView = new DataView(dt); tmpDataView.RowFilter = "[pro_st_parentid] = " + ParentID; foreach (DataRowView drv in tmpDataView)
{
TreeNode tn = new TreeNode(); if (pNode == null)
{
//添加根节点
tn.Text = drv["Pro_ST_Name"].ToString();
tn.Value = drv["pro_st_id"].ToString();
tvGoodsClass.Nodes.Add(tn);
tn.Expanded = true;
BinDingGoodsClass(Int32.Parse(drv["pro_st_parentid"].ToString()), tn,dt);
}
else
{
//添加当前节点的子节点
tn.Text = drv["Pro_ST_Name"].ToString();
pNode.ChildNodes.Add(tn);
tn.Expanded = true;
BinDingGoodsClass(Int32.Parse(drv["pro_st_parentid"].ToString()), tn,dt);
//再次递归
}
}
}自己修改别人的。好像不太行
时间紧迫,解决问题马上给分
数据库Pro_ST_ID Pro_ST_ParentID Pro_ST_Name
0 0 货品类别
1 0 全部
2 1 数码产品
3 1 建筑材料
4 1 劳保
tvGoodsClass 请问如何进行绑定?
private void BinDingGoodsClass(int ParentID, TreeNode pNode,DataTable dt)
{
DataView tmpDataView = new DataView(dt); tmpDataView.RowFilter = "[pro_st_parentid] = " + ParentID; foreach (DataRowView drv in tmpDataView)
{
TreeNode tn = new TreeNode(); if (pNode == null)
{
//添加根节点
tn.Text = drv["Pro_ST_Name"].ToString();
tn.Value = drv["pro_st_id"].ToString();
tvGoodsClass.Nodes.Add(tn);
tn.Expanded = true;
BinDingGoodsClass(Int32.Parse(drv["pro_st_parentid"].ToString()), tn,dt);
}
else
{
//添加当前节点的子节点
tn.Text = drv["Pro_ST_Name"].ToString();
pNode.ChildNodes.Add(tn);
tn.Expanded = true;
BinDingGoodsClass(Int32.Parse(drv["pro_st_parentid"].ToString()), tn,dt);
//再次递归
}
}
}自己修改别人的。好像不太行
时间紧迫,解决问题马上给分
道理一样的,把节点传进去,递归节点下级节点
/// 树形递归方法
/// </summary>
public void TreeViewBind()
{
try
{
//将查询结果返回到SqlDataReader
OleDbDataReader dr = AccessDBOperation.GetDataReader("select * form XX");
//返回树节点最大ID号
object obj = AccessDBOperation.GetCmdScalar("Select Max(autoID) form XX);
//将树节点最大ID号转换为int型
int count = 0;
if (obj != System.DBNull.Value)
{
count = int.Parse(obj.ToString());
}
//定义对象数组
TreeNode[] myNodes = new TreeNode[count + 1];
//初始化对象数组
for (int i = 0; i < myNodes.Length; i++)
{
myNodes[i] = new TreeNode();
}
//从表中取数据 构建树型
while (dr.Read())
{
int iParentNodeId = 0;
if (dr[parentID] == System.DBNull.Value)
{
iParentNodeId = 0;
}
else
{
iParentNodeId = (int)dr[parentID];
}
int iMyNodeId = (int)dr[autoID];
if (iParentNodeId != 0)
{
//显示的节点名称来自类别名称
myNodes[iMyNodeId].Text = dr[nodeText].ToString();
//给每个新增的节点添加事件
myNodes[iMyNodeId].SelectAction = TreeNodeSelectAction.Expand;
//给每个节点的值,添加在商品分类的级联值
myNodes[iMyNodeId].Value = dr[nodeValue].ToString();
//设置每个节点超链接指向的Target框架
myNodes[iMyNodeId].Target = nodeTarget;
//根据级联值和Get方法传递到本页面的主表mXxUniNo值生成每个节点的超链接
myNodes[iMyNodeId].NavigateUrl = nodeURL;
//递归添加下一个节点
myNodes[iParentNodeId].ChildNodes.Add(myNodes[iMyNodeId]);
}
else
{
//如果指定分类地下没有节点数据可读,跳出本节点,然后继续添加下一个分类名称节点
myNodes[iMyNodeId].Text = dr[nodeText].ToString();
myNodes[iMyNodeId].SelectAction = TreeNodeSelectAction.None;
tvTmpTreeView.Nodes.Add(myNodes[iMyNodeId]);
}
}
//默认treeview加载时展开的节点深度,现在默认为2层
tvTmpTreeView.ExpandDepth = 1;
dr.Close();
dr.Dispose();
}
catch (Exception ex)
{
DataBaseAidClass.WhriteErrLog(ex.Message);
}
}