提问者:小点点

C#使用MySqlDataAdapter作为数据源时保持DataGrid的选择


我的目标是保持选择后,数据已刷新。

这是我当前的代码,我如何将数据加载到数据网格视图中。

   public void RefreshGrid()
    {
        try
        { 
            // MySQL connection string
            using (var conn = new MySqlConnection(ConnectionString.ConnString))
            {
                using (var mySqlDataAdapter = new MySqlDataAdapter("select id, customer from table;", conn))
                {
                    using (var dataSet = new DataSet())
                    {
                        DataSet DS = new DataSet();
                        mySqlDataAdapter.Fill(DS);
                        labelOrderData.DataSource = DS.Tables[0];
                        labelOrderData.Columns[0].HeaderText = "ID";
                        labelOrderData.Columns[1].HeaderText = "Customer";
    
                        labelOrderData.Columns[0].Visible = false;
                    }
                }
         

    }
         }
         catch(Exception ex)
         {
             MessageBox.Show(ex.ToString(), "Refresh - Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
         }
     }

我就是这样提神的。

private void refreshBtn_Click(object sender, EventArgs e)
{
    RefreshGrid();  
}

问题

如何在刷新数据后保留所选内容?

我试过这样做:https://www.codeproject.com/questions/149500/c-datagrid-retain-cell-focus-after-refresh

但这对我不起作用。这是因为有一个点DataGridView为空且没有数据,并且由于这两行代码而引发错误

 int cell1 = (this.agentsDataGridView.CurrentCell.RowIndex);
 int cell2 = (this.agentsDataGridView.CurrentCell.ColumnIndex);

无效/未选中。


共1个答案

匿名用户

您可以让您的方法返回选定的索引并将其赋回。尝试如下方式:

 public void RefreshGrid()
{
  ... //code  you aleradey have
  return agentsDataGridView.CurrentCell.RowIndex;
}

后来呢:

private void refreshBtn_Click(object sender, EventArgs e)
{
    var index = RefreshGrid(); 
    gentsDataGridView.CurrentCell.RowIndex = index; 
}