2012-08-27 106 views
2

我有2個數據庫表:WPF的TreeView(hierarchicaldatatemplate)與2臺

  • ProductGroup(組ID,組名,...)
  • 產品(產品ID,產品名稱,組ID,...)

現在我想要在TreeView中顯示ProductGroup和Product Table。

我正在使用一個實體模型,我現在不知道如何將2個表綁定到1個TreeView。

我期待着一些答案! THX

+0

1)http://mattgemmell.com/2008/12/08/what-have-you-tried/ 2)有你在這裏看到的代碼示例:http://msdn.microsoft.com /en-us/library/system.windows.hierarchicaldatatemplate.aspx – Dennis

+0

我不止一次訪問過這個鏈接,但我沒有得到它。我是否需要爲每個表創建一個類?沒有更好的方式直接綁定它沒有額外的類? – user1627376

+0

爲什麼你想避免「額外的班級」?你用'entity-framework'標籤標記了你的問題。所以,你已經有了這些課程,不是嗎? – Dennis

回答

1
public partial class Form1 : Form 
{ 
    private string TextFields=string.Empty; 
    private string TagFields=string.Empty; 
    public Form1() 
     { 
      InitializeComponent(); 
     } 
private void Form1_Load(object sender, EventArgs e) 
{ 
FillTree(); 
} 


void FillTree() 
{ 
DataSet mds = new DataSet(); 
DataSet dds = new DataSet(); 
string ssql; 
TextFields = "GroupName"; 
TagFields = "GroupID"; 
this.treeView1.Nodes.Clear(); 
ssql = "select GroupID, GroupName from productgroups "; 
mds = DB.GetInstance.GetDataSet(ssql); 
if(mds!=null) 
    insert1LevelNodes(null,mds.Tables[0]); 
ssql="select ProductID, ProductName, GroupID from products"; 
dds = GetDataSet(ssql); 
if(dds!=null) 
{ 
    for(short i = 0;i<this.treeView1.Nodes.Count;i++) 
    { 
     TextFields = "ProductName"; 
     TagFields = "ProductID"; 
     insert1LevelNodes(this.treeView1.Nodes[i],dds.Tables[0]); 

    } 
} 
dds.Clear(); 
dds.Dispose(); 
} 


void insert1LevelNodes(TreeNode parentNode, DataTable dt) 
{ 
    string sNodeText = ""; 
    string sNodeTag = ""; 
    string[] aTexts = this.TextFields.Split(','); 
    string[] aTags = this.TagFields.Split(','); 
    for(int i=0; i< dt.Rows.Count; i++) 
    { 
     sNodeText = ""; 
     sNodeTag = ""; 
     for(int k=0;k<dt.Columns.Count;k++) 
     { 
      for(short j=0;j<aTexts.Length;j++) 
       if(aTexts[j].Equals(dt.Columns[k].ColumnName)) 
        sNodeText+=dt.Rows[i][k].ToString() + ":"; 
      for(short j=0;j<aTags.Length;j++) 
       if(aTags[j].Equals(dt.Columns[k].ColumnName)) 
        sNodeTag+=dt.Rows[i][k].ToString() + ","; 
     } 
     if(sNodeText.Length>0) sNodeText = sNodeText.TrimEnd(':'); 
     if(sNodeTag.Length>0) sNodeTag = sNodeTag.TrimEnd(','); 

     if(sNodeText==string.Empty) return; 
     TreeNode newNode=new TreeNode(sNodeText); 
     newNode.Tag = sNodeTag; 
     if(parentNode==null) 
      treeView1.Nodes.Add(newNode); 
     else 
      parentNode.Nodes.Add(newNode); 
    } 
} 

DataSet GetDataSet(string ssql) 
{ 
/// Your function to get Dataset from your Database 
} 
} 
+0

關於WPF的問題,而不是WinForms。 – Dennis

相關問題