更新后设置DataGridView SelectedRows

时间:2013-05-07 18:19:46

标签: c# winforms datagridview selecteditem

在我的一个C#Winform中,我有一个DataGridView,当用户按下刷新按钮时我会更新。

问题是所选行在此过程中丢失。

我希望能够做到以下几点:

private void function Refresh()
{
UpdateBegin(); // Keep the selected row in memory
Update();
UpdateEnd(); // Apply the selected row to the DataGridView
}

这是更新功能。它会更新数据源,清除所有列并使用正确的标题文本带回所需的列:

private void Update()
{
    allItem = DataRepository.LotProvider.GetByIdProduit(detail.IdProduit)
dataGridView1.DataSource = allItem;
dataGridView1.Columns.Clear();
// Get a dictionary of the required column ID / shown text
Dictionary<string, string> dictionary = InitDisplayedFields();        
foreach (KeyValuePair<string, string> column in dictionary)
    // If the grid does not contain the key
    if (!dataGridView1.Columns.Contains(column.Key))
    {
        // Add the column (key-value)
        int id = dataGridView1.Columns.Add(column.Key, column.Value);
        // Bind the property
        dataGridView1.Columns[id].DataPropertyName = column.Key;
    }

}

但是,我的DataGridView的选定行属性是只读的。

有解决方法吗?

1 个答案:

答案 0 :(得分:0)

您是否尝试过以下关于此主题的以下MSDN摘录(link):

void dataGridView1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
    this.dataGridView1.SelectionMode = DataGridViewSelectionMode.RowHeaderSelect;
    this.dataGridView1.Rows[e.RowIndex].Selected = true;
}

此代码段中的第二行显示了如何以编程方式选择行,前提是您跟踪选定的RowIndex(因为它可能在UpdateBegin()函数调用中完成)。

希望这可以提供帮助。