Примеры Delphi и C# из жизни

Примеры программирования на языках Delphi, C#

 




Получить текущую строку в БД (DataGridView) | C#

Из-за специфики ADO.NET, поскольку работа идет с локальной копией (полученными с сервера строками с последующим отключением от него) данных, возникает проблема получения текущей (выделенной в объекте отображения) строки данных - DataRow. Проблема в том, что объект отображения может сортировать или фильтровать отображаемые строки, нарушая таким образом порядок записей.

Для решения задачи приходится использовать объект CurrencyManager (как я понимаю от слова Current - текущий). Приведенный ниже код можно оформить в какой-нибуть глобальный класс.

public DataRow GetCurrentRow(DataGridView dg){
 CurrencyManager cm = (CurrencyManager)dg.BindingContext[dg.DataSource, dg.DataMember];
 if (cm.Count == 0) { return null; }
 DataRowView drv = (DataRowView)cm.Current;
 return drv.Row;
} // GetCurrentRow
:
DataRow dr = SomeClass.GetCurrentRow(myDataGridView);
dr["Name"] = "Bill Gates";
: