C# 如何使用DataTable.Load(DataReader)在没有重复记录的情况下重新加载DataGridView
有人能帮助我如何避免在C# 如何使用DataTable.Load(DataReader)在没有重复记录的情况下重新加载DataGridView,c#,.net,winforms,datagridview,datatable,C#,.net,Winforms,Datagridview,Datatable,有人能帮助我如何避免在DataGridView上获得重复的输出吗。这是图像和图像 这是myDataGridView的加载程序: private DataTable data() { using (OleDbConnection con = new OleDbConnection(inventorydb)) { using (OleDbCommand com = new OleDbCommand("Select * FROM Items",con))
DataGridView
上获得重复的输出吗。这是图像和图像
这是myDataGridView的加载程序:
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();
}
默认情况下,将结果添加到现有行。因此,如果您只需要拥有最新的记录,在调用DataTable.Load
之前,您应该清除DataTable
,否则新结果将与现有行合并
因此,对于项
变量,即数据表
,您可以使用以下任一选项:
items= new DataTable();
或
使用提供的
IDataReader
。如果数据表
已经包含行,则传入的
数据源中的数据与现有行合并
在查询中使用不同的关键字您可以在添加、编辑或删除中显示代码吗?我无法使用提供的代码重现此行为。我尝试输入按钮以保存/添加access上的项目。非常感谢。这很好,我现在可以完成我的项目了;这样,一旦他们选择了一个内容,不仅会选择一个shell,还会选择整行,并且会禁用编辑datagrid上显示的单元格?谢谢设置FullRowSelect
不会禁用编辑。它只是启用整行选择。如果在编辑行时遇到任何问题,则可能存在其他问题,例如可能将ReadOnly
设置为true。如果我的评论没有帮助,那么最好就新问题问一个新问题,因为这个问题应该针对一个问题。先生,你能在这方面帮助我吗。我读了这个问题。幸运的是,这个问题有一个正确的答案,我还对答案添加了一条评论。
items.Clear();
items.AcceptChanges();