2016-10-11 39 views
0

我已经添加了一个treeview到我的系统。我可以设法显示树视图的内容。但是输出与我预期的不一样。这里我添加了输出的图像。请看看它。为什么Treeview不显示层次结构?

ASPX代码

<asp:TreeView ID="TreeView1" runat="server" ImageSet="XPFileExplorer" 
 
         NodeIndent="15"> 
 
    <HoverNodeStyle Font-Underline="True" ForeColor="#6666AA" /> 
 
    <NodeStyle Font-Names="Tahoma" Font-Size="8pt" ForeColor="Black" HorizontalPadding="2px" 
 
       NodeSpacing="0px" VerticalPadding="10px"></NodeStyle> 
 
    <ParentNodeStyle Font-Bold="False" /> 
 
    <SelectedNodeStyle BackColor="#B5B5B5" Font-Underline="False" HorizontalPadding="0px" 
 
       VerticalPadding="2px" /> 
 
</asp:TreeView>

C#代码

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     dt=getDataObj.treeSketch(); 
     PopulateTreeView(dt, 0, null); 
    } 
}  

private void PopulateTreeView(DataTable dsParent, int parentId, TreeNode treeNode) 
{ 
    foreach (DataRow row in dsParent.Rows) 
    { 
      TreeNode child = new TreeNode 
      { 
       Text = row["FUNCTION_NAME"].ToString(), 
       Value = row["FUNCTION_CODE"].ToString() 
      }; 
      if (parentId == 0) 
      { 
       TreeView1.Nodes.Add(child); 
       dt = getDataObj.loadTree(child); 
       PopulateTreeView(dt, int.Parse(child.Value), child); 
      } 
      else 
      { 
       treeNode.ChildNodes.Add(child); 
      } 
    } 
} 

TreeView image
在这里用大写字母节点AR e主节点和其他子节点。为什么它不像树视图?如何使它工作?

查询

public DataTable loadTree(TreeNode child) 
{ 
    string strQuery = @"select FUNCTION_CODE,USER_TYPE from [WEB_FUNCTIONACCESS] 
         where FUNCTION_CODE = '"+ child +"' "; 

    return SqlHelper.ExecuteDataset(strConnStringAppeal, CommandType.Text, strQuery).Tables[0]; 
} 

回答

1

这个问题实际上是很明显的。

if (parentId == 0) 
     { 
      TreeView1.Nodes.Add(child); 
      dt = getDataObj.loadTree(child); 
      PopulateTreeView(dt, int.Parse(child.Value), child); 
     } 
     else 
     { 
      treeNode.ChildNodes.Add(child); 
     } 

所以条件是,如果parentId为0,则添加一个根级别节点,否则添加在子级别。

现在,当您调用此方法时,PopulateTreeView(dt, 0, null),parentId参数始终为。

更新:

我看你有没有方法,PopulateTreeView递归调用,给孩子值。 int.Parse(child.Value)这是否总是评估为0?

问题是你使用的参考child它给你一个TreeNode对象。你真正应该使用的是child.Value它给你一个字符串值。然后你可以将它附加到那里的查询字符串。

+0

其实这个代码我在互联网上找到。所以即使我还没有一个适当的想法呢 – Mike

+0

你可以在本地调试代码并逐行执行吗? – woodykiddy

+0

你认为我应该怎么做才能做到这一点? – Mike