2016-05-30 4 views
-1

これは私のXMLファイルです。テーブル要素を親モードとして設定し、ツリービューの観点からXMLファイルから要素を見つけて、親ノードとしてC#(WinForm)のLINQを使用してツリービューコントロールにロードするようにします

<dsSource> 
     <dtTable> 
     <name>View_one</name> 
     <projectname>Sample</projectname> 
     <query> select KPI_Sales.Branch,KPI_Sales.Category,KPI_Sales.Advance,KPI_Sales.Amount,KPI_Sales.Carat,KPI_Sales_Stock.Sale_amount,KPI_Sales_Stock.Sale_carat,KPI_Sales_Stock.Sale_piece from (select KPI_Sales.Branch,KPI_Sales.Category,SUM(KPI_Sales.Advance) Advance,SUM(KPI_Sales.Amount) Amount,SUM(KPI_Sales.Carat) Carat from KPI_Sales /*FilterRegion*/ group by KPI_Sales.Branch,KPI_Sales.Category)KPI_Sales Inner Join(select KPI_Sales_Stock.Branch,SUM(KPI_Sales_Stock.Sale_amount) Sale_amount,SUM(KPI_Sales_Stock.Sale_carat) Sale_carat,SUM(KPI_Sales_Stock.Sale_piece) Sale_piece from KPI_Sales_Stock /*FilterRegion*/ group by KPI_Sales_Stock.Branch)KPI_Sales_Stock ON KPI_Sales.Branch = KPI_Sales_Stock.Branch </query> 
     <tables>KPI_Sales_Stock,KPI_Sales</tables> 
     <measures>KPI_Sales_Stock.Sale_piece,KPI_Sales_Stock.Sale_carat,KPI_Sales_Stock.Sale_amount,KPI_Sales.Carat,KPI_Sales.Amount,KPI_Sales.Advance</measures> 
     <dimensions>KPI_Sales.Category,KPI_Sales.Branch</dimensions> 
     <newcolumn></newcolumn> 
     <dbname>MehtaJewel</dbname> 
     </dtTable> 
    <dtTable> 
     <name>view_two</name> 
     <projectname>Sample</projectname> 
     <query> select KPI_Sourcing.Category,KPI_Sourcing.Date,KPI_Sourcing.Division,KPI_Sourcing.Making_Charge,KPI_Sourcing.Pieces,View_one.Sale_amount,View_one.Amount,View_one.Advance from (select KPI_Sourcing.Category,KPI_Sourcing.Date,KPI_Sourcing.Division,SUM(KPI_Sourcing.Making_Charge) Making_Charge,SUM(KPI_Sourcing.Pieces) Pieces from KPI_Sourcing /*FilterRegion*/ group by KPI_Sourcing.Category,KPI_Sourcing.Date,KPI_Sourcing.Division)KPI_Sourcing Inner Join( select KPI_Sales.Branch,KPI_Sales.Category,KPI_Sales.Advance,KPI_Sales.Amount,KPI_Sales.Carat,KPI_Sales_Stock.Sale_amount,KPI_Sales_Stock.Sale_carat,KPI_Sales_Stock.Sale_piece from ( select KPI_Sales.Branch,KPI_Sales.Category,SUM(KPI_Sales.Advance) Advance,SUM(KPI_Sales.Amount) Amount,SUM(KPI_Sales.Carat) Carat from KPI_Sales /*FilterRegion*/ group by KPI_Sales.Branch,KPI_Sales.Category)KPI_Sales Inner Join( select KPI_Sales_Stock.Branch,SUM(KPI_Sales_Stock.Sale_amount) Sale_amount,SUM(KPI_Sales_Stock.Sale_carat) Sale_carat,SUM(KPI_Sales_Stock.Sale_piece) Sale_piece from KPI_Sales_Stock /*FilterRegion*/ group by KPI_Sales_Stock.Branch)KPI_Sales_Stock ON KPI_Sales.Branch = KPI_Sales_Stock.Branch) View_one ON KPI_Sourcing.Category = View_one.Category </query> 
     <tables>View_one,KPI_Sourcing</tables> 
     <measures>View_one_tablevw.Advance,View_one_tablevw.Amount,View_one_tablevw.Sale_amount,View_one_tablevw.Pieces,View_one_tablevw.Making_Charge</measures> 
     <dimensions>View_one_tablevw.Division,View_one_tablevw.Date,View_one_tablevw.Category</dimensions> 
     <newcolumn></newcolumn> 
     <dbname>MehtaJewel</dbname> 
    </dtTable></dsSource> 
+0

あなたは何を求めているのかよく分かりませんが、達成したいことを試してみましたか? – halfer

答えて

0

提供されているXMLを使用した実例です。再帰を使用してツリービューを生成します。再帰的な方法は

Private Sub BuildTree(xe As XElement, node As TreeNode) 
    Dim cnode As TreeNode 
    If xe.HasElements Then 
     For Each el As XElement In xe.Elements 
      cnode = New TreeNode(el.Name.LocalName) 
      cnode.Tag = el 
      node.Nodes.Add(cnode) 
      BuildTree(el, cnode) 
     Next 
    ElseIf xe.LastNode IsNot Nothing AndAlso xe.LastNode.NodeType = Xml.XmlNodeType.Text Then 
     cnode = New TreeNode(xe.LastNode.ToString) 
     node.Nodes.Add(cnode) 
    End If 
End Sub 

ですこれは、VBのため申し訳ありませんが、この

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click 
    Dim dsSrc As XElement 
    dsSrc = <dsSource> 
       <dtTable> 
        <name>View_one</name> 
        <projectname>Sample</projectname> 
        <query> select KPI_Sales.Branch,KPI_Sales.Category,KPI_Sales.Advance,KPI_Sales.Amount,KPI_Sales.Carat,KPI_Sales_Stock.Sale_amount,KPI_Sales_Stock.Sale_carat,KPI_Sales_Stock.Sale_piece from (select KPI_Sales.Branch,KPI_Sales.Category,SUM(KPI_Sales.Advance) Advance,SUM(KPI_Sales.Amount) Amount,SUM(KPI_Sales.Carat) Carat from KPI_Sales /*FilterRegion*/ group by KPI_Sales.Branch,KPI_Sales.Category)KPI_Sales Inner Join(select KPI_Sales_Stock.Branch,SUM(KPI_Sales_Stock.Sale_amount) Sale_amount,SUM(KPI_Sales_Stock.Sale_carat) Sale_carat,SUM(KPI_Sales_Stock.Sale_piece) Sale_piece from KPI_Sales_Stock /*FilterRegion*/ group by KPI_Sales_Stock.Branch)KPI_Sales_Stock ON KPI_Sales.Branch = KPI_Sales_Stock.Branch </query> 
        <tables>KPI_Sales_Stock,KPI_Sales</tables> 
        <measures>KPI_Sales_Stock.Sale_piece,KPI_Sales_Stock.Sale_carat,KPI_Sales_Stock.Sale_amount,KPI_Sales.Carat,KPI_Sales.Amount,KPI_Sales.Advance</measures> 
        <dimensions>KPI_Sales.Category,KPI_Sales.Branch</dimensions> 
        <newcolumn></newcolumn> 
        <dbname>MehtaJewel</dbname> 
       </dtTable> 
       <dtTable> 
        <name>view_two</name> 
        <projectname>Sample</projectname> 
        <query> select KPI_Sourcing.Category,KPI_Sourcing.Date,KPI_Sourcing.Division,KPI_Sourcing.Making_Charge,KPI_Sourcing.Pieces,View_one.Sale_amount,View_one.Amount,View_one.Advance from (select KPI_Sourcing.Category,KPI_Sourcing.Date,KPI_Sourcing.Division,SUM(KPI_Sourcing.Making_Charge) Making_Charge,SUM(KPI_Sourcing.Pieces) Pieces from KPI_Sourcing /*FilterRegion*/ group by KPI_Sourcing.Category,KPI_Sourcing.Date,KPI_Sourcing.Division)KPI_Sourcing Inner Join( select KPI_Sales.Branch,KPI_Sales.Category,KPI_Sales.Advance,KPI_Sales.Amount,KPI_Sales.Carat,KPI_Sales_Stock.Sale_amount,KPI_Sales_Stock.Sale_carat,KPI_Sales_Stock.Sale_piece from ( select KPI_Sales.Branch,KPI_Sales.Category,SUM(KPI_Sales.Advance) Advance,SUM(KPI_Sales.Amount) Amount,SUM(KPI_Sales.Carat) Carat from KPI_Sales /*FilterRegion*/ group by KPI_Sales.Branch,KPI_Sales.Category)KPI_Sales Inner Join( select KPI_Sales_Stock.Branch,SUM(KPI_Sales_Stock.Sale_amount) Sale_amount,SUM(KPI_Sales_Stock.Sale_carat) Sale_carat,SUM(KPI_Sales_Stock.Sale_piece) Sale_piece from KPI_Sales_Stock /*FilterRegion*/ group by KPI_Sales_Stock.Branch)KPI_Sales_Stock ON KPI_Sales.Branch = KPI_Sales_Stock.Branch) View_one ON KPI_Sourcing.Category = View_one.Category </query> 
        <tables>View_one,KPI_Sourcing</tables> 
        <measures>View_one_tablevw.Advance,View_one_tablevw.Amount,View_one_tablevw.Sale_amount,View_one_tablevw.Pieces,View_one_tablevw.Making_Charge</measures> 
        <dimensions>View_one_tablevw.Division,View_one_tablevw.Date,View_one_tablevw.Category</dimensions> 
        <newcolumn></newcolumn> 
        <dbname>MehtaJewel</dbname> 
       </dtTable> 
      </dsSource> 

    TreeView1.Nodes.Clear() 
    Dim node As New TreeNode("Tables") 
    BuildTree(dsSrc, node) 

    TreeView1.Nodes.Add(node) 
End Sub 

を用いて試験したが、それは簡単にC#2に変換されます。

関連する問題