2016-09-24 11 views
2

DataGridViewに出力が重複しないようにする方法を教えてください。ここに画像Before changeと画像After add/edit or deleteがあります。ここで重複レコードなしでDataTable.Load(DataReader)を使用してDataGridViewをリロードする方法

は私DataGridViewローダです:

private DataTable data() 
{ 
    using (OleDbConnection con = new OleDbConnection(inventorydb)) 
    { 
     using (OleDbCommand com = new OleDbCommand("Select * FROM Items",con)) 
     { 
      con.Open(); 
      OleDbDataReader reader = com.ExecuteReader(); 
      items.Load(reader); 
     } 
    } 
    return items; 
} 
void reset() 
{ 
    connect.Close(); 
    connect.ConnectionString = inventorydb; 
    connect.Open(); 
    dataGridView1.DataSource = null; 
    dataGridView1.Update(); 
    dataGridView1.Refresh(); 
    dataGridView1.DataSource = data(); 
} 

追加し、変更を保存します

private void save_Click(object sender, EventArgs e) 
{ 
    if (mode == "a") 
    { 
     connect.Close(); 
     connect.ConnectionString = inventorydb; 
     connect.Open(); 
     sqlcommand.CommandText = "INSERT INTO Items (SerialID,  Brand_Name, Item_Name,Item_Date) VALUES ('" + txtserial.Text + "','" + txtbrand.Text + "', '" + txtitem.Text + "', '" + date + "') "; 
     sqlcommand.Connection = connect; 
     OleDbDataReader reader = sqlcommand.ExecuteReader(); 
     MessageBox.Show("Record(s) Saved", "Sample"); 
    } 
    connect.Close(); 
    reset();  
} 
+0

querryで異なるキーワードを使用 –

+0

追加、編集、または削除にコードを表示できますか?このコードを提供してこの動作を再現することはできません。 – Steve

+0

私はアクセスのアイテムを保存/追加するためにボタンを入れてみました。 – Richard

答えて

0

DataTable.Loadをデフォルトでは、既存の行に結果が追加されます。したがって最新のレコードが必要な場合は、DataTable.Loadを呼び出す前にDataTableをクリアする必要があります。そうしないと、新しい結果が既存の行とマージされます。

だから、DataTableあるごitems変数で、これらのオプションのいずれかを使用することができます。

items= new DataTable(); 

または

items.Clear(); 
items.AcceptChanges(); 

DataTable.Load

はAからの値を持つDataTableを塗りつぶし提供されたを使用するデータソースIDataReaderDataTableにすでに行が含まれている場合は、データソースからの受信 データが既存の行とマージされます。

+0

ありがとうございます。それは完璧に働く、私は今私のプロジェクトを終了することができます。 – Richard

+0

あなたは大歓迎です:) –

+0

最後の質問 についてdatagridviewにはこのようなものがあります - listView1.FullRowSelect = true; コンテンツを選択すると、シェルだけでなく、完全な行が選択され、DataGridに表示されているセルの編集が無効になります。 ありがとう! – Richard

関連する問題