我的目标是保持选择后,数据已刷新。
这是我当前的代码,我如何将数据加载到数据网格视图中。
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);
无效/未选中。
您可以让您的方法返回选定的索引并将其赋回。尝试如下方式:
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;
}