2016-03-21 1 views
0

Ich möchte Daten aus zwei Tabellen namens "OpenCourses" und "OpenCoursesChapters" anzeigen.Telerik radtreeview Anzeige von Daten aus verbundenen Tabellen gibt Fehler Diese Spalten haben derzeit keine eindeutigen Werte

Opencourses Tabelle:

enter image description here

OpenCoursesChapters Tabelle:

enter image description here

I course auf radtreeview als Elternknoten und Kapitel als Kindknoten zeigen wollen:

<div class="demo-container size-thin"> 

    <telerik:RadTreeView Height="300px" runat="server" ID="RadPanelBar1" DataTextField="name" DataFieldID="id" 
    DataFieldParentID="parentid" DataSourceID="SqlDataSource1" > 

    </telerik:RadTreeView> 
</div> 

    <asp:SqlDataSource runat="server" ID="SqlDataSource1" ConnectionString="<%$ ConnectionStrings:ConStr %>" 
    ProviderName="System.Data.SqlClient" SelectCommand="SELECT courseid as id, NULL as parentid, coursename as name from opencourses union select chapterid as id, courseid as parentid, chaptername as name from opencourseschapters"></asp:SqlDataSource> 

über das Projekt läuft ich erhalte den Fehler

Diese Spalten haben derzeit eindeutige Werte.

Irgendwelche Ideen?

Antwort

0

Frist Ihre Auswahlbefehl muss sein:

"SELECT chapterid AS ID, chaptername AS Name, 
courseid + 1000 AS parentID FROM OpenCoursesChapters p 
UNION ALL 
SELECT courseid + 1000 AS ID, coursename AS Name, null AS parentID 
FROM Opencourses" 

Es sei denn, Sie asp TreeView wie diese verwenden:

  <asp:TreeView ID="RadPanelBar1" 
       runat="server" 
       ShowCheckBoxes="All" 
       PopulateNodesFromClient="False" 
       onclick="client_OnTreeNodeChecked();" > 
      </asp:TreeView> 

und in Java-Skript (in der Fußzeile kann), um diese Funktion für Kinder Auto-Check verwenden Nodes:

also, in page_load() server side code hinter rufen Sie diese Funktion:

public void tree_fill_general(TreeView tree_name, string parent_query, string child_query) 
    { 
     try 
     { 
      if (your connection == false) 
      { 
       your connection.Open(); 
      } 
      tree_name.Nodes.Clear(); 
      string q = parent_query; 
      SqlDataAdapter sda = new SqlDataAdapter(q, your connection); 
      DataSet datasetParent = new DataSet(); 
      sda.Fill(datasetParent); 
      for (int i = 0; i <= datasetParent.Tables[0].Rows.Count - 1; i++) 
      { 
       TreeNode main = new TreeNode(); 
       main.Text = datasetParent.Tables[0].Rows[i]["name"].ToString(); 
       main.Value = datasetParent.Tables[0].Rows[i]["code"].ToString(); 

       string q1 = child_query + main.Value; 
       SqlDataAdapter sda1 = new SqlDataAdapter(q1, your connection); 
       DataSet datasetChild = new DataSet(); 
       sda1.Fill(datasetChild); 
       for (int j = 0; j <= datasetChild.Tables[0].Rows.Count - 1; j++) 
       { 
        TreeNode mainchild = new TreeNode(); 
        mainchild.Text = datasetChild.Tables[0].Rows[j]["name"].ToString(); 
        mainchild.Value = datasetChild.Tables[0].Rows[j]["code"].ToString(); 
        main.ChildNodes.Add(mainchild); 
       } 
       tree_name.Nodes.Add(main); 
      } 

     } 
     catch (Exception eee) 
     { 
      Utility.SetMessage(Page, "error", eee.Message, enumIcon.Error); 
     } 
    } 

und parent_query:

"select courseid as code,coursename as name from Opencourses order by sec,courseid"; 

final, child_query:

"select chapterid as code,chaptername as name opencourseschapters where courseid ="; 
Verwandte Themen