Получаем DefaultView DataRowView из DataRow
-
09-06-2019 - |
Вопрос
Вот такая ситуация:Мне нужно привязать WPF FixedPage
против DataRow
.Привязки не работают против DataRows
;они работают против DataRowViews
.Мне нужно сделать это как можно более общим способом, поскольку я ничего не знаю о том, что находится в DataRow
.
Что мне нужно, так это иметь возможность получить DataRowView
для данного DataRow
.Я не могу использовать Find()
метод на основе DefaultView
потому что для этого требуется ключ, и нет никакой гарантии, что в таблице будет установлен первичный ключ.
У кого-нибудь есть предложения относительно наилучшего способа обойти это?
Решение
Не совсем сексуальный фрагмент кода, но, похоже, это не автоматизированный способ поиска строки без простого перебора таблицы.
DataRowView newRowView = null;
foreach (DataRowView tempRowView in myDataTable.DefaultView)
{
if (tempRowView.Row == rowToMatch)
newRowView = tempRowView;
}
if (newRow != null)
UseNewRowView(newRowView);
else
HandleRowNotFound();
Другие советы
row.Table.DefaultView[row.Table.Rows.IndexOf(row)]
Это приемлемый ответ.Но если вы окажетесь в такой ситуации, вам следует подумать о том, чтобы узнать больше о представлениях данных и о том, как они используются, а затем реорганизовать свой код, чтобы он был ориентирован на представление, а не на таблицу.