2016-10-03 5 views
1

MVVMパターンが新しくなっています。リストをツリービューコントロールに入力する必要がある場所にMVVMパターンを作成しました。ビュー、ビューモデル、Model.Iには、ハード今私が代わりにハードコードされたdata.Iのモデルのリストに私のMS Accessのデータテーブルを接続したい.Butコーディングは、DALのリールを作成し、以下のように私のMS Accessのデータテーブルに接続している:ここでloadempをデータテーブルから辞書レコードに追加する

 using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Data.OleDb; 
using System.Configuration; 
using System.Data; 
namespace DAL2 
{ 
    public class PersonalDAL 
    { 
     // static String _ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionStr"].ConnectionString; 
     OleDbConnection con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\faisal\\Xerox2014\\wpf\\WPFHierarchy\\IconnectDB.accdb"); 

     public DataTable loademp() 
     { 
      con.Open(); 
      OleDbDataAdapter sda = new OleDbDataAdapter("select * from empTable", con); 
      DataTable dt = new DataTable(); 
      sda.Fill(dt); 


      con.Close(); 
      return dt; 
     } 
    } 

} 

をメソッドはデータテーブルを返します。モデルで は、私はちょうど私が行き詰まっている.theのコードを、リストを埋めるためにしようとしていることはここにある:ここで

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Xml.Linq; 
using DAL2; 
using System.Data; 

namespace DevLake.OrgChart.UI.Model 
{ 
    class OrgChartManager 
    { 
     private static OrgChartManager self; 

     //orgchart stored in dictionary 
     private Dictionary<int, Node> list = new Dictionary<int, Node>(); 

     private OrgChartManager() 
     { 

      DataTable my_datatable = new DataTable(); 
     my_datatable = new PersonalDAL().loademp(); 
      int ColumnCount = my_datatable.Columns.Count; 
      foreach (DataRow dr in my_datatable.Rows) 
      { 
       list.Add(dr); 
       //******here I get stuck and throw syntax error on this line 


      } 


      //hard coded populate data 
       // list.Add(1, new Node { Id = 1, FirstName = "Joe", LastName =              "Smith", ParentId = 1 }); 
      //list.Add(2, new Node { Id = 2, FirstName = "Rich", LastName = "Angel", ParentId = 1 }); 
       //list.Add(3, new Node { Id = 3, FirstName = "Mary", LastName = "Peach", ParentId = 1 }); 

I午前.ANY本体がどのように埋めるために私を助けることができる、それは構文エラーを投げるリストを埋めることができませんデータ・テーブル・データ.MY MS Accessのテーブルとの私のリストは、次のようになります。

ID FirstName LastName ParentId 
1 Joe Smith 1 
10 Grey Peech 9 
11 Manny Travel 9 
2 Rich Angel 1 
3 Mary Peach 1 
4 Mike Door 2 
5 Jimmy Fond 2 
6 Ann Brown 4 
7 George Farm 4 
8 Able Jump 4 
9 Corn Shaw 1 

私は、データベースを接続して、私のモデルにデータテーブルをもたらすことができていますが、リストへのデータ・テーブル・データを充填することはどこです私は立ち往生しました。私の友人を助けてください。

私のノードクラス:あなたがこれを行う方法

class Node 
    { 
     public int Id { get; set; } 

     public string FirstName { get; set; } 

     public string LastName { get; set; } 

     public int ParentId { get; set; } 

    } 
} 
+0

は 'Node'クラスに依存します。それはどう? –

+0

私のノードクラス:クラスNode { public int Id {get;セット; } パブリック文字列FirstName {get;セット; } パブリック文字列LastName {get;セット; } public int ParentId {get;セット; } } } –

+0

WPF/MVVMには本当に関係のないものがたくさんあります。質問は、DataRowインスタンスからNodeインスタンスを作成するだけに減らす必要があります。 – LordWilmore

答えて

1
 foreach (DataRow dr in my_datatable.Rows) 
     { 
      Node node = new Node 
      { 
       Id = (int)dr["ID"] 
       FirstName = (string)dr["FirstName"], 
       LastName = (string)dr["LastName"], 
       ParentId = (int)dr["ParentId"] 
      }; 
      list[node.Id] = node; 
     } 
関連する問題