C# 使用C中的backgroundworker在datagridview中获取数据库数据#
在datagridview中从数据库获取数据后,重复最后一个数据,但缺少datagridview中的第一个数据。我关注这个链接 我得到这个输出,第一个数据:1122被遗漏,最后一个数据PEC-5281被重复。由于我的级别较低,我无法发布图像,所以我将链接放在可以查看输出的位置C# 使用C中的backgroundworker在datagridview中获取数据库数据#,c#,datagridview,C#,Datagridview,在datagridview中从数据库获取数据后,重复最后一个数据,但缺少datagridview中的第一个数据。我关注这个链接 我得到这个输出,第一个数据:1122被遗漏,最后一个数据PEC-5281被重复。由于我的级别较低,我无法发布图像,所以我将链接放在可以查看输出的位置 您需要为每行创建一个对象集合,然后将该集合用作DataGridView 使用asyncwait可以做得更清楚一点,而且没有BackgroundWorker创建的额外线程 private async Task<IEn
您需要为每行创建一个对象集合,然后将该集合用作
DataGridView
使用asyncwait
可以做得更清楚一点,而且没有BackgroundWorker创建的额外线程
private async Task<IEnumerable<RetriveTableData>> GetDataAsync()
{
var query = "SELECT * from tblBook";
using (var connection = new SqlConnection(connectionString))
using (var command = new SqlCommand(query, connection))
{
await connection.OpenAsync();
using (var reader = command.ExecuteReaderAsync())
{
var data = new List<RetriveTableData>();
while(await reader.ReadAsync())
{
var temp = new RetriveTableData
{
EmpId = reader["C_FICH"].ToString();
EmpName = reader["C_SITE"].ToString();
AccessionNo = reader["accessionNo"].ToString();
Obj.Author = reader["author"].ToString();
};
data.Add(temp);
}
return data;
}
}
}
您需要为每一行创建一个对象集合,然后将该集合用作
DataGridView
使用asyncwait
可以做得更清楚一点,而且没有BackgroundWorker创建的额外线程
private async Task<IEnumerable<RetriveTableData>> GetDataAsync()
{
var query = "SELECT * from tblBook";
using (var connection = new SqlConnection(connectionString))
using (var command = new SqlCommand(query, connection))
{
await connection.OpenAsync();
using (var reader = command.ExecuteReaderAsync())
{
var data = new List<RetriveTableData>();
while(await reader.ReadAsync())
{
var temp = new RetriveTableData
{
EmpId = reader["C_FICH"].ToString();
EmpName = reader["C_SITE"].ToString();
AccessionNo = reader["accessionNo"].ToString();
Obj.Author = reader["author"].ToString();
};
data.Add(temp);
}
return data;
}
}
}
你只有一个Obj,而且你以一种奇怪的方式得到它。这是什么意思。我不明白你的回答是什么你必须在while-loop中创建一个新的obj。你只有一个obj,而且你得到它的方式很奇怪。这是什么意思。我不明白你回答了什么你必须在while循环中创建一个新的obj。
private async void Form_Load(object sender, EventArgs e)
{
dataGridView1.DataSource = await GetDataAsync();
}