Выберите строку в просмотре сетки подкачки на основе уникального значения ячейки - PullRequest
1 голос
/ 17 ноября 2011

У меня есть вид сетки с включенной подкачкой страниц и текстовое поле, в котором пользователь может ввести строковое значение, используемое для выбора строки в виде сетки со столбцом, который соответствует строковому значению.Данные столбца не являются первичным ключом и не перечислены в названиях данных.

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

    protected void SelFrame_Clicked(object sender, EventArgs e)
    {
        string requestedFrame = tbSelFrame.Text;
        if (requestedFrame != "")
        {
            int index = (from DataControlField col in gvFrame.Columns
                            where col.HeaderText == "Name"
                            select gvFrame.Columns.IndexOf(col)).FirstOrDefault();

            var query = from GridViewRow row in gvFrame.Rows
                        where row.Cells[index].Text == requestedFrame
                        select row;
            GridViewRow result = query.FirstOrDefault();
            if (result != null)
            {
                int selectedIndex = result.DataItemIndex;
                if (selectedIndex > -1)
                    gvFrame.SelectedIndex = selectedIndex;
            }
        }
    }

Как отмечалось, когда искомое значение находится на невидимой странице вида сетки, эта строка возвращает ноль:

 GridViewRow result = query.FirstOrDefault();

Как найти подходящую строку в виде сетки с включенной подкачкой?

1 Ответ

1 голос
/ 17 ноября 2011

Вместо этого вы должны добавить значение как ключ данных, а затем сделать что-то вроде этого:

gvFrame.SelectedIndex = gvFrame.Rows.Cast<GridViewRow>().First(r => 
    (string)gvFrame.DataKeys[r.RowIndex]["foo"] == requestedFrame).RowIndex;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...