Получить DefaultView DataRowView из DataRow - PullRequest
7 голосов
/ 28 августа 2008

Вот ситуация: мне нужно связать WPF FixedPage с DataRow. Привязки не работают против DataRows; они работают против DataRowViews. Мне нужно сделать это как можно более общим образом, так как я ничего не знаю и не могу контролировать то, что находится в DataRow.

Что мне нужно, так это чтобы получить DataRowView для данного DataRow. Я не могу использовать метод Find() на DefaultView, потому что для этого требуется ключ, и нет никакой гарантии, что в таблице будет установлен первичный ключ.

Есть ли у кого-нибудь предложения о том, как лучше всего обойти это?

Ответы [ 2 ]

6 голосов
/ 09 августа 2011

Не совсем симпатичный кусок кода, но, похоже, это не автоматический способ найти строку без просто циклического преобразования таблицы.

        DataRowView newRowView = null;
        foreach (DataRowView tempRowView in myDataTable.DefaultView)
        {
            if (tempRowView.Row == rowToMatch)
                newRowView = tempRowView;
        }
        if (newRow != null)
            UseNewRowView(newRowView);
        else
            HandleRowNotFound();
3 голосов
/ 28 августа 2008
row.Table.DefaultView[row.Table.Rows.IndexOf(row)]

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

...