2013-03-30 3 views
0

У меня есть таблица данных TblTreeView, которая имеет четыре столбцаПоказать данные в элементе управления TreeView

ParentID (pk) | ParentName | LeftChildID | RightChildID

и я хочу отображать все данные в виде дерева;

вроде как

ParentName

|

| _LeftChildID

|

| _RightChildID

Я использовал

SqlDataAdapter dataAdapter = new SqlDataAdapter("Select * from tblTreeView", SqlCon); 
    DataSet dataSet = new DataSet(); 

    dataAdapter.Fill(dataSet); 

    TreeView1.DataSource = dataSet.Tables[0]; 
    TreeView1.DataBind(); 

Тогда возникает ошибка: - HierarchicalDataBoundControl принимает только источники данных, которые реализуют IHierarchicalDataSource или IHierarchicalEnumerable. Пожалуйста, дайте мне код. Как я могу это сделать; Спасибо Sir/Madam

+0

Если имена не являются PK, как вы находите левого/правого ребенка? Должны ли это быть LeftChildID и RightChildID? –

+0

Хорошо, но теперь у меня такая же ошибка, как и выше: - ИерархическийDataBoundControl принимает только источники данных, которые реализуют IHierarchicalDataSource или IHierarchicalEnumerable – Aman

+0

Какую технологию вы используете? WPF, WinForm, ...? –

ответ

0

Я вижу, эта статья является очень большим, чтобы связать данные из Dataset.

Binding the ASP.NET TreeView to a DataSet or an ObjectDataSource

Я реализовал этот код как следующий ..

private void GenerateCoaTree() 
    { 
     DataSet ds = new DataSet(); 
     dcAccountingDataContext dc = new dcAccountingDataContext(); 
     DataTable dt = dc.usp_RPT_ChartOfAccount_Select(null, CompanyID).CopyToDataTable(); 
     ds.Tables.Add(dt); 
     // The second parmeter for the ID of the element and the third parameter is the ID of the parent element in the tree. 
     TreeViewCoa.DataSource = new HierarchicalDataSet(ds, "AccountID", "COA_ID"); 
     TreeViewCoa.DataBind(); 
    } 

, и я вызывается этот метод внутри Page_Load страницы для связывания элемента управления TreeView, когда страница загружена в первый раз.

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     GenerateCoaTree(); 
    } 
} 

<asp:TreeView ID="TreeViewCoa" runat="server"> 
    <DataBindings> 
     <asp:TreeNodeBinding DataMember="System.Data.DataRowView" 
      TextField="COADescription" ValueField="AccountID" /> 
    </DataBindings> 
</asp:TreeView> 

Я надеюсь, что это поможет вам решить вашу проблему :).

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