很简单的树,也不知道是数据库服务器的问题还是怎么,就是无法生成,提示jit调试失败什么的,要命嘞.数据库的结构是这样的
parentid, childid, pname,
0 00000000 董事会
00000000 0001 总裁
0001 0002 经营决策
0001 0003 管理决策
0001 0004 顾问支持
0004 0005 律师
0004 0006 顾问
0002 0007 生产公司
0002 0008 销售公司
0002 0009 投资公司 程序代码也很明白,不知道是那里的问题,请高手给指点指点.DataSet ds;
Page_Load()
{
string strsql ="SELECT * FROM HR_dept_tree2 ";
db.CnRead2(strsql);
DataTable dt =db.CnRead2(strsql).Tables[0];
ds = db.CnRead2(strsql);
InitTree(TreeView1.Nodes,"0") // 初始化树}private void InitTree(Microsoft.Web.UI.WebControls.TreeNodeCollection Nds,string parentId)
{
DataView dv=new DataView();
Microsoft.Web.UI.WebControls.TreeNode tmpNd;
string intId;
dv.Table=ds.Tables[0];
dv.RowFilter="ParentId=" + parentId + "" ;
foreach(DataRowView drv in dv)
{
tmpNd=new Microsoft.Web.UI.WebControls.TreeNode();
tmpNd.ID=drv["ChildID"].ToString();
tmpNd.Text=drv["Code"].ToString();
Nds.Add(tmpNd);
intId=drv["ParentId"].ToString();
InitTree(tmpNd.Nodes,tmpNd.ID);
}
}请大家给看看是什么问题.
parentid, childid, pname,
0 00000000 董事会
00000000 0001 总裁
0001 0002 经营决策
0001 0003 管理决策
0001 0004 顾问支持
0004 0005 律师
0004 0006 顾问
0002 0007 生产公司
0002 0008 销售公司
0002 0009 投资公司 程序代码也很明白,不知道是那里的问题,请高手给指点指点.DataSet ds;
Page_Load()
{
string strsql ="SELECT * FROM HR_dept_tree2 ";
db.CnRead2(strsql);
DataTable dt =db.CnRead2(strsql).Tables[0];
ds = db.CnRead2(strsql);
InitTree(TreeView1.Nodes,"0") // 初始化树}private void InitTree(Microsoft.Web.UI.WebControls.TreeNodeCollection Nds,string parentId)
{
DataView dv=new DataView();
Microsoft.Web.UI.WebControls.TreeNode tmpNd;
string intId;
dv.Table=ds.Tables[0];
dv.RowFilter="ParentId=" + parentId + "" ;
foreach(DataRowView drv in dv)
{
tmpNd=new Microsoft.Web.UI.WebControls.TreeNode();
tmpNd.ID=drv["ChildID"].ToString();
tmpNd.Text=drv["Code"].ToString();
Nds.Add(tmpNd);
intId=drv["ParentId"].ToString();
InitTree(tmpNd.Nodes,tmpNd.ID);
}
}请大家给看看是什么问题.
代码这里有问题
============================
Microsoft.Web.UI.WebControls.TreeNode tmpNd;
string intId;
dv.Table=ds.Tables[0];
dv.RowFilter="ParentId=" + parentId + "" ;
foreach(DataRowView drv in dv)
{
tmpNd=new Microsoft.Web.UI.WebControls.TreeNode();
tmpNd.ID=drv["ChildID"].ToString();
tmpNd.Text=drv["Code"].ToString();
Nds.Add(tmpNd);
intId=drv["ParentId"].ToString();
InitTree(tmpNd.Nodes,tmpNd.ID);
}
============================
把
Microsoft.Web.UI.WebControls.TreeNode tmpNd;放入到
foreach(DataRowView drv in dv)
中去试试看
Dim drv As DataRowView
Dim tmpNd As TreeNode
Dim i As Integer
Try
dv.Table = ds.Tables("tree")
For Each drv In dv
tmpNd = New TreeNode
strID = drv("dcID")
tmpNd.ID = strID
tmpNd.Text = drv("cdsc")
Nds.Add(tmpNd)
intiTree(Nds(Nds.Count - 1).Nodes, CType(strID, Integer), 0) Next
Catch ex As Exception
Response.Write(ex.ToString)
End Try
{
int i;
TreeNode tmpNd;
DataSet dt;
dt = func.GetDataTable("select * from pubSystemTree where F_Parent='" + parentId + "' order by sort");
for (int i = 0; i <= dt.Tables(0).Rows.Count - 1; i++) {
tmpNd = new TreeNode();
tmpNd.ID = dt.Tables(0).Rows(i)("F_SysCode").ToString();
tmpNd.Text = dt.Tables(0).Rows(i)("F_SysName").ToString();
tmpNd.NodeData = dt.Tables(0).Rows(i)("F_SysCode").ToString();
tmpNd.Target = dt.Tables(0).Rows(i)("F_Memo").ToString();
if (dt.Tables(0).Rows(i)("F_Memo") == "1") {
tmpNd.CheckBox = true;
if (tbTemp.Text != "0") {
DataSet ds;
ds = func.GetDataTable("Select * from pubUserPermit where UserID=" + tbTemp.Text + " and LocationID=" + tbLocation.Text + " and F_SysCode='" + dt.Tables(0).Rows(i)("F_SysCode") + "'");
if (ds.Tables(0).Rows.Count > 0) {
tmpNd.Checked = true;
} else {
tmpNd.Checked = false;
}
}
} else {
tmpNd.CheckBox = false;
}
tmpNd.Expanded = true;
Nds.Add(tmpNd);
InitTree(tmpNd.Nodes, tmpNd.ID);
}
}
tmpNd.CheckBox = true;
if (tbTemp.Text != "0") {
DataSet ds;
ds = func.GetDataTable("Select * from pubUserPermit where UserID=" + tbTemp.Text + " and LocationID=" + tbLocation.Text + " and F_SysCode='" + dt.Tables(0).Rows(i)("F_SysCode") + "'");
if (ds.Tables(0).Rows.Count > 0) {
tmpNd.Checked = true;
} else {
tmpNd.Checked = false;
}
}
} else {
tmpNd.CheckBox = false;
}
//這段樓主可不用看
'首先进行权限判断
_Function.UsrJudge() If Not IsPostBack Then
'获得本用户所处企业、级别
Dim EntID As String = Session("_FromEntID") & "" '获得本用户所处企业级别的所有企业信息
'填充Treeview
'显示
tvEntList.Nodes.Clear()
tvEntList.Nodes.Add(FillTree(EntID)) '添加客户端提示
btnDel.Attributes.Add("onClick", "javascript:return confirm('确认要删除吗?');")
btnMove.Attributes.Add("onClick", "javascript:return confirm('确认要移动吗?');")
End If
End Sub
Private Function FillTree(ByVal NodeID As String) As TreeNode
Dim tn As New TreeNode If EntHasChild(NodeID) = True Then
'存在子节点
'取出所有子节点信息()
Dim Dt As DataTable
Dt = GetEntChildData(NodeID) Dim i As Int32
Dim ChildCount As Int32 = Dt.Rows.Count
Dim SubNodeTable(ChildCount - 1) As TreeNode For i = 0 To ChildCount - 1
'生成子节点
SubNodeTable(i) = FillTree(Dt.Rows(i).Item("fldEntID"))
'添加到本节点
tn.Nodes.Add(SubNodeTable(i))
Next
End If '获得本节点详细内容
Dim dtDetail As DataTable
dtDetail = GetEntNodeDataDetail(NodeID) tn.ID = dtDetail.Rows(0)("fldEntID").ToString
tn.Text = tn.ID & " - " & dtDetail.Rows(0)("fldEntName").ToString Return tn End Function
你这是c++的代码吗?
怎么语法有点奇怪.
codeangel(-- 与人方便,自已方便 --)
我现在问题就是处在递归上,
希望能帮我看看问题出在那里. kingastar(qingzhu)
你说的的确是这样,但是我按你的方法做没有解决问题.谢谢各位,但是问题没有解决.继续讨论啊.
你这是c++的代码吗?
怎么语法有点奇怪.
------------------------
我看你用的是C#,就將我的代碼用轉化工具轉成了C#
原始的vb代碼如下:
Private Sub InitTree(ByVal Nds As Microsoft.Web.UI.WebControls.TreeNodeCollection, ByVal parentId As String)
Dim i As Integer
Dim tmpNd As TreeNode
Dim dt As DataSet
dt = func.GetDataTable("select * from pubSystemTree where F_Parent='" & parentId & "' order by sort")
For i = 0 To dt.Tables(0).Rows.Count - 1
tmpNd = New TreeNode
tmpNd.ID = dt.Tables(0).Rows(i)("F_SysCode").ToString()
tmpNd.Text = dt.Tables(0).Rows(i)("F_SysName").ToString()
tmpNd.NodeData = dt.Tables(0).Rows(i)("F_SysCode").ToString()
tmpNd.Target = dt.Tables(0).Rows(i)("F_Memo").ToString()
tmpNd.Expanded = True
Nds.Add(tmpNd)
InitTree(tmpNd.Nodes, tmpNd.ID)
Next
End Sub