2016-10-11 154 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