2016-11-22 76 views
0

我有下面這段代碼,點擊它將進度列的默認值從0更改爲1.現在的問題是單擊數據網格時也會刷新。我希望它能夠刷新,但我想保留它的位置並移到它下面的下一行。刷新後,光標會按預期返回到開始位置。是的,我知道這很明顯是因爲我在最後調用了refreshDataGrid函數,所以它會一直這樣做。甚至在數據網格刷新時移動到下一行

private void button4_Click(object sender, EventArgs e) 
    { 
     string connectionString2 = "Data Source=LPMSW09000012JD\\SQLEXPRESS;Initial Catalog=Pharmacies;Integrated Security=True"; 
     string query2 = "UPDATE dbo.[" + comboBox4.Text + "] SET Progress= '1' where code = '" + comboBox2.Text + "'; "; 


     using (SqlConnection connection = new SqlConnection(connectionString2)) 
     { 
      SqlCommand command = new SqlCommand(query2, connection); 

      command.Connection.Open(); 
      command.ExecuteNonQuery(); 
      command.Connection.Close(); 

     } 

     textBox1.Clear(); 
     textBox3.Clear(); 
     comboBox3.ResetText(); 
     comboBox2.SelectedIndex = comboBox2.SelectedIndex + 1; 


     if (dataGridView3.CurrentRow != null) 
      dataGridView3.CurrentCell = 
       dataGridView3.Rows[Math.Min(dataGridView3.CurrentRow.Index + 1, dataGridView3.Rows.Count - 1)] 
       .Cells[dataGridView3.CurrentCell.ColumnIndex]; 
     refreshDataGrid();} 

我希望這個代碼特定塊可以解決這個問題:

if (dataGridView3.CurrentRow != null) 
      dataGridView3.CurrentCell = 
       dataGridView3.Rows[Math.Min(dataGridView3.CurrentRow.Index + 1, dataGridView3.Rows.Count - 1)] 
       .Cells[dataGridView3.CurrentCell.ColumnIndex]; 

什麼,我試圖做的是捕獲突出顯示的行索引的當前位置,並不管我打電話refreshDataGrid函數,它仍然會依次移動,而不是每次從頭開始。 有沒有辦法做到這一點?再次解釋一下,我想保留當前突出顯示的行索引,並讓它移動到下一行,而不必擔心刷新時重新開始。例如。如果我從第1行開始,那麼即使我調用refreshDataGrid函數,它也會轉到第二行。

+0

使用的UpdatePanel – mjb

回答

0

修復了這個問題。 存儲當前行的索引到一個變量,然後增加該值:

   var i = dataGridView3.CurrentRow.Index; 
       refreshDataGrid(); 
       dataGridView3.CurrentCell = dataGridView3.Rows[Math.Min(i + 1, dataGridView3.Rows.Count - 1)].Cells[0]; 
0

您應該在刷新網格之前保存當前的單元格選擇,然後在刷新網格完成後重置它。根據刷新的工作方式,如果順序或計數可能發生變化,您可以保存行和列位置,或保存一些關鍵值以再次查找行。

 if (dataGridView3.CurrentRow != null) 
      SaveCurrentCellLocation(); 

     refreshDataGrid(); 

     ResetCurrentCellLocation(); 
+0

試過了,沒有改善 – Jevon

+0

跳至下一行,但之後 – Jevon

+0

設置單元選擇凍結不應該凍結UI,可能更去這裏。是refreshDataGrid()同步還是異步? – cdkMoose