2017-07-08 17 views
0

これで、選択したグリッドビューのデータをテキストボックスに読み込む方法はわかりましたが、どのようにして選択した場所情報を更新し、ファイル内に配置し、選択した場所をファイルから削除することもできます。xmlファイルの情報を選択して更新するには

これは私が現在、データグリッド

ds.ReadXml("Database.xml"); 

string filter = ""; 
filter = "userdata" + " LIKE '*" + "u" + "*'"; 
DataView dv = new DataView(ds.Tables[0]); 
dv.RowFilter = filter; 
dataGridView1.DataSource = dv; 
dataGridView1.Columns[4].Visible = false; 

にロードする方法と、私はこれが私のxmlです

if (e.RowIndex >= 0) 
{ 

DataGridViewRow row = this.dataGridView1.Rows[e.RowIndex]; 
Nametb.Text = row.Cells["name"].Value.ToString(); 
Locationtb.Text = row.Cells["Location"].Value.ToString(); 
Infotb.Text = row.Cells["Info"].Value.ToString(); 
dayvisitcb.Text = row.Cells["Dayvisited"].Value.ToString(); 

} 

クリックさによってはその上のテキストボックスに読み込む方法です

<root> 
    <place> 
    <Name>home</Name> 
    <Location>x-292 z 277</Location> 
    <Info>home</Info> 
    <Dayvisited>10</Dayvisited> 
    </place> 
    <place> 
    <Name>town</Name> 
    <Location>x 990 z-2485</Location> 
    <Info>gas station</Info> 
    <Dayvisited>12</Dayvisited> 
    </place> 
    <place> 
    <Name>crossing</Name> 
    <Location>x 90 z-2998</Location> 
    <Info>working stiff</Info> 
    <Dayvisited>11</Dayvisited> 
    </place> 
</root> 

このファイルにはランダムな名前が含まれ、数百の場所が含まれます。しかし、私はグリッドに場所をロードし、場所を選択して詳細をテキストボックスに入力して編集しますが、リストに追加するだけで、選択した場所を更新したり削除したりすることはできません。

答えて

1

DataBinding。それはあなた自身のコーディングを必要とすることなく、すべての重い持ち上げを行います。データセット内のXMLファイルを読み書きするだけで済みます。

最初にプロジェクトで新しい項目DataSet(データカテゴリにあります)を追加し、データベースという名前を付けます。 desginサーフェスを右クリックしてDataTableを追加し、[Add]> [DataTable]を選択します。あなたのDataTableにという名前を付けてください。次に、名前、場所、情報、Dayvisitedの4つの列をテーブルに追加します。
[データセットのプロパティ]で、[名前空間]フィールドを空にします。設定が完了したら
これはあなたの結果になります:

dataset

は、プロジェクトをビルドします。

Winformをデザインモードで開きます。
ツールボックスから、カテゴリDataからフォームのBindingSource、BindingNavigator、DataGridView、DataSetの各コンポーネントをドラッグします。

DataSourceの場合、前の手順で作成したTypedデータセットdatabaseを選択します。

bindingSourceをクリックし、プロパティDataSourceをデータベースに設定します。 DataMemberをに設定してください。

bindingnavigatorをクリックします。 BindingsourceプロパティをbinsdingSource1に設定します(デフォルト名は変更されていないものとします)。

DataGridviewをクリックします。プロパティDataSourceをbindingSource1に設定します。

各フィールドにテキストボックスを追加します。プロパティの各テキストボックスに対して、DataBindingsカテゴリを開き、Textプロパティに対してbindingSource1 - >名前(他のプロパティの場合は繰り返し)を選択します。

フォームにデータセットを読み込むためのボタンを追加します。これはクリックイベントに含まれるコードです:

database2.ReadXml("Database.xml"); 
this.button2.Enabled = true; 
button1.Enabled = false; 

ボタンをフォームに追加してデータセットを保存します。これは、そのクリックイベントに行くのコードです:あなたはそれを実行すると

project overview

と負荷をクリックしてください:あなたはこのすべては、あなたのプロジェクトがどのように見えるかで行われている

database2.WriteXml("Database.xml"); 

ボタンは、選択したレコードは、ナビゲーターで新しいレコードを追加し、[保存]をクリックします、これはあなたの結果になります:これは動作しますが、ではありません

example

+0

私は使いたい方法です。それを作る方法があるので、私はbindingnavigator +が単にbindingSource1.AddNew()であるので、ボタンの更新を行うことができます。私はそれをテキストボックスの代わりに文字列にバインドさせることができますか?より柔軟性があります。だから私はaddnewそれは私が価値を与えた文字列から更新します。これが意味を持つならば。 –

+0

バインディングナビゲータを非表示にして、テキストボックスでbindingSource1.AddNew()を呼び出す独自のボタンを作成し、TextBox.Textにあなたが気にしていた文字列を入力することができます。文字列は不変であるため、文字列値に直接バインドすることはできません。クラスのインスタンスのプロパティにバインドします。私の例では、それはデータグリッドとテキストボックスです。それを超えて、あなたは自分自身である。 – rene

関連する問題