2013-03-23 3 views
3

Я новичок в C#/ASP.Net. и теперь у меня есть проект, который включает привязку дерева из двух таблиц SQL. Я сделал некоторые домашние работы .. и мне удалось привязать мое дерево. сначала вот мои таблицы. Моя цель - сгруппировать моего ребенка в соответствующий родитель. но что происходит, так это то, что ребенок входит во всех родителей. Я знаю, что я почти там, но я застрял. :(Как мне связать дочерние узлы с соответствующим родительским узлом?

tblCategory(parentnodes) 
categoryID(varchar(20)) 
Category(varchar(50)) 
active(char(1)) 

tblDocuments(childnodes) 
id(int) 
description(varchar(100)) 
title(varchar(20)) 
categoryid(varchar(20)) 

tblcategory.categoryid = tbldocuments.categoryid 

вот мои коды.

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!Page.IsPostBack) 
     { 
      //bindtree 
      DataTable dtCategoryNodes = new DataTable(); 
      dtCategoryNodes = content.dtCategoryNodes(); 
      dtCategoryNodes.AcceptChanges(); 

      DataTable dtNodes = new DataTable(); 
      dtNodes = content.GetNodes(); 
      dtNodes.AcceptChanges(); 

      TreeNode CategoryNode = null; 
      for (int i = 0; i < dtCategoryNodes.Rows.Count; i++) 

      { 
       string categoryid = dtCategoryNodes.Rows[i]["CategoryID"].ToString(); 

       CategoryNode = new TreeNode(dtCategoryNodes.Rows[i] 
       "CATEGORY"].ToString()); 

       CategoryNode.Collapse(); 
       for (int j = 0; j < dtNodes.Rows.Count; j++) 
       { string parentid = dtNodes.Rows[j]["parentid"].ToString(); 

        TreeNode childNode = new TreeNode(dtNodes.Rows[j]["TITLE"].ToString()); 
        CategoryNode.ChildNodes.Add(childNode); 


       }   

       tvContents.Nodes.Add(CategoryNode); 
       tvContents.DataBind(); 
       } 
      } 
      } 

, но я была проблема здесь. Вот что случилось с моим деревом.

a. Crift Items 
a.1Configuring DCOM 

b.Internal Refresher Trainings 
b.1Configuring DCOM 

c. Product/Process Update 
c.1 Configuring DCOM 

d.Promotions/Discounts 
d.1 Configuring DCOM 

e.QA Update 
e.1 Configuring DCOM 

ниже мои данные tbldocument id Title File CategoryID 1 Конфигурирование DCOM DCOM.doc PRODUPDT

tblCategory 
CategoryID Category     active 
CRIFT Crift Items     Y 
IRTRAIN Internal Refresher Trainings Y 
PRODUPDT Product/Process Update   Y 
PROMODISCS Promotions/Discounts   Y 
QAUPDT QA Update     Y 

Цените все комментарии и предложения! Заранее спасибо!

ответ

1

Заменить

for (int j = 0; j < dtNodes.Rows.Count; j++) 
{ string parentid = dtNodes.Rows[j]["parentid"].ToString(); 
    TreeNode childNode = new TreeNode(dtNodes.Rows[j]["TITLE"].ToString()); 
    CategoryNode.ChildNodes.Add(childNode); 
} 

С

foreach(DataRow drChild in dtNodes.Select("CategoryID=" + categoryid)) 
{ 
    TreeNode childNode = new TreeNode(drChild["TITLE"].ToString()); 
    CategoryNode.ChildNodes.Add(childNode); 
} 
+0

привет Арун! извините за поздний ответ ... спасибо за ваш совет. Я пробовал, но я думаю, что пропустил некоторые моменты в своем коде. вот что я сделал. – Joel

+0

для (int i = 0; i Joel

+0

Спасибо ВАМ! Цените помощь! – Joel

Смежные вопросы