2012-04-12 11 views
1

データベースをxmlファイルとして含むアプリケーションがあります。それはクライアントサーバーアーキテクチャを持っています。したがって、ここでサーバーは、データセットを使用してxmlファイルからデータを読み取り、xmlスキーマに格納します。次に、サーバーはデータをシリアル化してUI(クライアント)に渡します.SUIデータは、ツリービューの左側に、リストビューには右側に、プロパティグリッドは右下に表示されます。コントロールをシリアライズする方法

Uiのデータは、クラスとオブジェクトに分類されます。これで、データベースにmachineclass.xmlとmachineobjects.xmlというxmlファイルが作成されました。私はツリービューからの電子のノードを選択した場合machinesclass.xmlは、電子クラス、コンピュータclasssのような様々なクラスが含まれ、agriculturetoolクラスなどとmachineobjects.xmlはUIにだから今のテレビ、のPentium4コンピュータ、Tractrorなどが含まれ、それはなどテレビ、ラジオ、電話が一覧表示されますリストビューを使用して右上部分に含まれるオブジェクトと、TVのオブジェクト「TV」を選択した場合、右下のプロパティグリッドにTVの関連プロパティが表示されます。だから、

は、今、私たちは仕事を持っている誰かが、たとえば、親machinesclass.xmlとmachineobjects.xml

から、xmlファイル(.xmlファイル)の観点からバックUIから選択したオブジェクトの取ることを望んでいる場合であれば誰かUIリストビューからテレビを選択し、.xmlファイル(tv.xml)の形でバックアップして、いつか彼がデータをインポートできるようにするために、ここで実装できるロジックは何ですか?私はlistviewとpropertygridをシリアル化できますか、それを行うオプションがありますか? にこれは私がUI

+0

しかし、私は行うことができますどのようにUI内のすべてのオブジェクトをdeserilizingした後、オブジェクトを選択した場合にどのようにserilizeできること? – michale

+0

例えばlistview.Add(アイテム)の代わりにコントロールを移入の、私の答えを参照してください - あなたは、例えばリスト公開するビジネス・オブジェクトは、あなたのGUIでのみコードがlistview.DataSource = businessObject.ListOfItemsである必要があります。ビジネスオブジェクトでは、saveSerializedListOfItems()というメソッドがあります –

答えて

1

内コピーペースト操作のために使用していたコードのビットは、私がリストビューとPropertyGridのをシリアル化することができている、またはいずれかの選択肢があるがそれを行いますか?
http://www.codeproject.com/Articles/3335/Persist-ListView-settings-with-serialization

ここ

PropertyGridのをシリアライズする方法である:ここで

は、リストビューをシリアライズする方法である
http://www.codeproject.com/Articles/27326/Load-and-Save-Data-Using-PropertyGrid

私のアドバイスは、それを正しく行うことです、と私は正解だと思いますListViewとPropertyGridがバインドされているビジネスオブジェクトをシリアル化することです。 GUIからビジネスロジックを分離すると、実際にはが簡単に

編集(OPコードを表示するために、質問を編集した後):

XMLファイルにデータを保存する:XMLファイルからデータを読み取るために

System.Runtime.Serialization.Formatters.Binary.BinaryFormatter BinFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); 
System.IO.FileStream FS = new System.IO.FileStream("C:\\tv.xml", IO.FileMode.Create); 
BinFormatter.Serialize(FS, new ArrayList(listview1.Items)); 
FS.Close(); 

System.Runtime.Serialization.Formatters.Binary.BinaryFormatter BinFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); 
string fname; 
System.IO.FileStream FS = new System.IO.FileStream("C:\\tv.xml", IO.FileMode.Open); 
listview1.Items.AddRange(BinFormatter.Deserialize(FS).ToArray(typeof(ListViewItem))); 
FS.Close(); 

ここでは、PropertyG RID: PropertyGrid.Serialize

+0

私の既存のコードの一部を追加しました。これはdoiingのコピーUIのUIに貼り付け操作をコピーします – michale

+0

おそらく、私はこの状態について、それは私の質問に再び見ることができます私はそれを変更しました – michale

+0

@michaleこのページをリフレッシュ、私はあなたの最後のコメントの前に私の答えを更新しました。私はあなたが持っているコードを見ることができます、単にTrevoListViewに2つのメソッドを追加します。 1つはアイテムを保存し、もう1つはアイテムを読み込みます。PropertyGridの場合は、同じ2つの関数か2つの新しい関数のいずれかがあなたのものであるかどうかを判断します。 –

関連する問題