2016-08-08 4 views
1

データベースのテーブルにバインドされていないdatagridviewがあります。 datagridviewには、ドロップダウンリストの内容とボタンクリックのテキストボックスが挿入されています。フォームを閉じるたびにレコードが削除されないようにしたい。データベーステーブルを作成せずに、datagridviewのレコードを保存する方法はありますか?以下はフォームを閉じるとDataGridViewレコードが消えます

は私のコードです:

private void btnInsert_Click(object sender, EventArgs e) 
{ 
    this.dgInsertedInfo.Rows.Add(ddlVendorID.Text, txtDate.Text); 
} 
+0

テキストファイルに保存するなど、他の方法で保存する必要があります。しかし、非常に大きなレコードがある場合、これは効率的ではありません。それとも、フォームを閉じるか、それを隠すだけで十分でしょうか?それをデータベースに保存する際の問題は何ですか? – Alexander

答えて

2

。ここには、XML serializationを使用する単純なソリューションがあります。それはいくつかの仮定を行うこと

注:

  • データ全てが文字列
  • あるDataGridViewのは、すでにあなたは、シリアライズを作成する必要があり、他のデータ型を保存するには、すべての列

を持っています構造!

private void saveButton_Click(object sender, EventArgs e) 
{ 
    List<List<string>> data = new List<List<string>>(); 

    foreach(DataGridViewRow row in dgInsertedInfo.Rows) 
    { 
     List<string> rowData = new List<string>(); 
     foreach (DataGridViewCell cell in row.Cells) 
      rowData.Add(cell.FormattedValue.ToString()); 
     data.Add(rowData); 
    } 

    XmlSerializer xs = new XmlSerializer(data.GetType()); 
    using (TextWriter tw = new StreamWriter(yourFileName)) 
    { 
     xs.Serialize(tw, data); 
     tw.Close(); 
    } 
} 

private void loadButton_Click(object sender, EventArgs e) 
{ 
    List<List<string>> data = new List<List<string>>(); 

    XmlSerializer xs = new XmlSerializer(data.GetType()); 
    using (TextReader tr = new StreamReader(yourFileName)) 
     data = (List<List<string>>) xs.Deserialize(tr); 

    foreach (List<string> rowData in data) 
     dgInsertedInfo.Rows.Add(rowData.ToArray()); 
} 
0

独自のクラスを記述すると、設定プロパティとして保存することができます。

property setting

クラス設定:

namespace MyNamespace 
{ 
    public class Settings 
    { 
     private ObservableCollection DataGridItemsProp; 
     public ObservableCollection DataGridItems 
     { 
      get { return DataGridItemsProp; } 
      set { DataGridItemsProp = value; } 
     } 
    } 
} 

取得して設定を保存:あなたは多くのオプションを持っている

//get settings 
var datagrid = Properties.Settings.Default.UserSettings; 

//save settings 
Properties.Settings.Default.UserSettings= datagrid; 
Properties.Settings.Default.Save(); 
関連する問題