Я пытаюсь сохранить выбранную строку элемента управления DataGridView после обновления данных. Это мой кодПоддержание выделенной строки элемента управления DataGridView после обновления данных
public partial class frmPlant : Form
{
string gSelectedPlant;
private void frmPlant_Load(object sender, EventArgs e)
{
dataGridView1.AutoGenerateColumns = true;
dataGridView1.DataSource = bindingSource1;
FillData();
dataGridView1.DataMember = "Table";
}
private void FillData()
{
ds = _DbConnection.returnDataSet(_SQlQueries.SQL_PlantSelect);
bindingSource1.DataSource = ds.Tables[0];
}
public DataSet returnDataSet(string txtQuery)
{
conn.Open();
sqlCommand = conn.CreateCommand();
DB = new SQLiteDataAdapter(txtQuery, conn);
DS.Reset();
DB.Fill(DS);
conn.Close();
return (DS);
}
private void dataGridView1_Selectionchanged(object sender, EventArgs e)
{
if (dataGridView1.SelectedRows.Count > 0)
{
gSelectedPlant = dataGridView1.SelectedRows[0].Cells["PlantId"].Value.ToString();
}
}
private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
int selectedIndex;
if (!string.IsNullOrEmpty(gSelectedPlant) && e.ListChangedType == ListChangedType.Reset)
{
if (ds.Tables.Count > 0)
{
selectedIndex = bindingSource1.Find("PlantId", gSelectedPlant);
if (selectedIndex <= 0)
selectedIndex = 0;
dataGridView1.Rows[selectedIndex].Selected = true;
}
else
{
gSelectedPlant = string.Empty;
}
}
}
}
Это все еще не в состоянии поддерживать RowIndex выбранной строки. Он прокручивается до строки1. Вот блог я http://www.makhaly.net/Blog/9
Предположим, я выбираю строку на Form1 (где весь этот код) и перейти в следующий класс, который показывает мне подробную информацию Abt конкретного завода. Если я снова вернусь к этой первой форме, нажав кнопку «Назад», строка сбрасывается до 1. gSelectedPlant принимает значение 1 и selectedindex = 0. Это имеет смысл, но я пока не могу понять, как поддерживать значение gSelectedPlant. Да, он принимает нулевой интинентально, но при сборе данных составляет 1.
ли вы пытаетесь поставить точку останова на DataBindingComplete и посмотреть, если это проходит через проверки, также если он находит значение SelectedIndex – Habib
. Положите точку останова и проверьте последовательность событий, запускаемых при первом запуске события dataGridView1_DataBindingComplete. Поэтому, я думаю, именно поэтому переменная gSelectedPlant не поддерживает правильное значение. – Talha
Вы пытались добавить логическое сохранение выполнения SelectionChanged? –