我有一個綁定到SQL數據庫表的WinForm中的dataGridView。我想每兩秒鐘刷新一次數據,但保持用戶所做的任何行選擇。因此我設置了一個計時器並在tick事件中實現了一些代碼。該代碼工作正常,以刷新數據,但我努力讓行選擇持久。發生什麼事情是,當計時器再次滴答時,dataGridView中的所有行都會被選中,並且之後的所有記錄都會被選中。我不知道是什麼導致這種情況,因爲我的代碼選擇行是在一個foreach循環中,並且if語句應該阻止這種情況發生。這裏是我的代碼這個功能:C#在dataGridView刷新後保留行選擇
private void dataRefreshTimer_Tick(object sender, EventArgs e)
{
string selRows = null;
foreach (DataGridViewRow row in taskDataGrid.Rows)
{
if (row.Selected = true)
{
selRows += row.Cells[0].Value.ToString() + ",";
Console.WriteLine(selRows);
}
}
currenttasksTableAdapter.Fill(taskManagerDataSet.currenttasks);
currenttasksBindingSource.ResetBindings(false);
try
{
if (selRows != null)
{
foreach (DataGridViewRow row in taskDataGrid.Rows)
{
if (selRows.Contains(row.Cells[0].Value.ToString() + ","))
{
row.Selected = true;
}
}
}
} catch (Exception ex) { Console.WriteLine(ex); }
任何人都可以告訴我我缺少的是導致所有行被選中?感謝您的任何建議!
什麼是細胞[0]的值,多少?首要的關鍵? –
這是一個隱藏的列,其中包含來自表格的Pkey,因此每個條目都是唯一的。這是一個數字,因爲該字段在數據庫上進行索引。 –
不要在'if'條件中使用'Contains'並用確切的值檢查它可能會解決您的問題 –