CurrencyManager предотвращает скрытие строки в DataGrid - PullRequest
0 голосов
/ 23 декабря 2018

Я не знаю точно, для чего предназначен Currencymanager.Я не реализовал это явно, но он не позволяет мне скрывать строки в моей сетке данных.

Я строю сетку данных из файла CSV с несколькими столбцами.Одна из них включает в себя двойную сумму (цену).

Когда я хочу установить для всех строк сумму, меньшую / большую, чем что-либо, на Invisible

public override void Execute(object o) {
    DataGridViewRow row = (DataGridViewRow)o;
    if ((string)Value == "off") row.Visible = false;                       
}

, это говорит мне как

"Could not hide Rows bounded to the Currency Manager"

Ошибка не появляется, когда я скрываю строку, основанную на другом типе данных столбца для бывших строк - только если значение является двойным.

Редактировать: Ii временно решенопроблема, просто перехватывая InvalidOperationException и игнорируя его.Это выполняется в любом случае.Но я думаю, что это нехорошо: S

Могу ли я каким-то образом снять связь с управляющим валютой?

1 Ответ

0 голосов
/ 23 декабря 2018

Этот подход очень медленный (в качестве альтернативы вы можете проверить DataView и его свойство RowFilter), но решение вашей проблемы - получить объект диспетчера валют DataGridView и вызвать SuspendBinding и ResumeBinding перед тем, каки после вашего кода.

CurrencyManager manager = (CurrencyManager)BindingContext[dataGridView1.DataSource];
manager.SuspendBinding();

//your code goes here
//....

manager.ResumeBinding();
...