Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > Получение значения поля в dataGridView


Автор: evgeniyr 24.3.2006, 10:30
Здравствуйте.
Второй день smile , необходимо получить значение определенного поля в dataGridView. Пример, есть таблица с полями id, name. На форме лежат sqlConnection, sqlDataAdapter, DataSet и dataGridView. Необходимо получить значение поля id в текущей строке dataGridView. Делаю так: dataSet11.MyTable.Rows[dataGridView1.CurrentRow.Index]["id"].ToString(), все прекрасно, но если я делаю сортировку по колонке Name(щелкаю мышью в заголовке), то этот код возвращает мне порядковые номера строк. Как же достучаться до значения id при различной сортировке?
Заранее благодарен.

Автор: mr.DUDA 24.3.2006, 11:45
DataGridView не обязательно bind-ится на DataSet:
Цитата
The DataGridView control supports the standard Windows Forms data binding model, so it will bind to instances of classes described in the following list:

Any class that implements the IList interface, including one-dimensional arrays.
Any class that implements the IListSource interface, such as the DataTable and DataSet classes.
Any class that implements the IBindingList interface, such as the BindingList class.
Any class that implements the IBindingListView interface, such as the BindingSource class.


Поэтому в гриде нет никаких свойств и методов, позволяющих явно получить текущий DataRow. Расчитывать же на то, что в датасете номер строки таблицы = CurrentRow.Index, неверно.

Получить текущий DataRow можно с пом. CurrencyManager:

Код

    CurrencyManager cmgr = (CurrencyManager)this.dataGridView1.BindingContext[this.dataGridView1.DataSource];
    DataRow row = ((DataRowView)cmgr.Current).Row;

Автор: evgeniyr 24.3.2006, 12:27
Спасибо, но не понятно что с этим делать.

Автор: mr.DUDA 24.3.2006, 12:35
Цитата(evgeniyr @ 24.3.2006, 11:27 Найти цитируемый пост)
Спасибо, но не понятно что с этим делать.

1) получили DataRow вышеописанным способом
2) получили поле "id" из DataRow:
Код

string id = row["id"].ToString();


Автор: evgeniyr 24.3.2006, 12:40
To mr.DUDA:
Огромное спасибо!

Автор: mr.DUDA 24.3.2006, 13:01
Цитата(evgeniyr @ 24.3.2006, 11:40 Найти цитируемый пост)
Огромное спасибо!

пожалуйста

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)