#c# #winforms #gridview #datagridview
#c# #winforms #просмотр сетки #datagridview
Вопрос:
Я должен отобразить значение строки, выбранной в сетке, в текстовых полях.Я использую этот код, но он не работает. Любая помощь будет оценена.
private void CRUD_SelectionChanged(object sender, EventArgs e)
{
txtBoxID.Text = CRUD.SelectedRows[0].Cells[0].Value.ToString();
txtBoxStates.Text = CRUD.SelectedRows[1].Cells[1].Value.ToString();
txtBoxName.Text = CRUD.SelectedRows[2].Cells[2].Value.ToString();
txtBoxAddress.Text = CRUD.SelectedRows[3].Cells[3].Value.ToString();
txtBoxCenter.Text = CRUD.SelectedRows[4].Cells[4].Value.ToString();
txtBoxCity.Text = CRUD.SelectedRows[5].Cells[5].Value.ToString();
}
Комментарии:
1. Как выглядят ваши данные в CRUD? Какое поведение вы видите? Получаете ли вы какие-либо исключения?
2. @FalcoGer мое имя в GridView — CRUD, и это просто записи обычного пользователя
3. мне кажется странным, что вы хотите использовать данные из разных строк и столбцов. вы уверены, что это то, что вы хотите?
4. @FalcoGer Братан, я просто хочу щелкнуть по строке, и это должно отобразить все значения строк в текстовых полях. Я что-то делаю не так.
5. Это winform? Пожалуйста, добавьте точный тег.
Ответ №1:
Вы индексируете выбранные строки. если у вас меньше 6 выбранных строк, то вы выйдете за границы. Вероятно, вы хотите извлекать данные только из одной строки. Проверьте, выбрана ли только одна строка, а затем используйте индекс 0. Убедитесь, что вы установили CRUD.MultiSelect = false
В качестве альтернативы используйте CRUD.CurrentRow
который когда-либо даст вам только одну строку.
Form.Designer.cs:
this.CRUD.SelectionChanged = new System.EventHandler(this.CRUD_SelectionChanged);
Form.cs:
private void CRUD_SelectionChanged(object sender, EventArgs e)
{
txtBoxID.Text = CRUD.CurrentRow.Cells[0].Value.ToString();
txtBoxStates.Text = CRUD.CurrentRow.Cells[1].Value.ToString();
txtBoxName.Text = CRUD.CurrentRow.Cells[2].Value.ToString();
txtBoxAddress.Text = CRUD.CurrentRow.Cells[3].Value.ToString();
txtBoxCenter.Text = CRUD.CurrentRow.Cells[4].Value.ToString();
txtBoxCity.Text = CRUD.CurrentRow.Cells[5].Value.ToString();
}