Я заполняю GridView кодом, устанавливая источник данных для набора данных, возвращаемого запросом. Поэтому, по-видимому, сортировка и подкачка не просто работают магически, как если бы я использовал datasourceid = some sqldatasource.сортировка сетки: нужно перечитывать каждый раз?
Я нашел несколько примеров того, как это сделать в Интернете, но все они кажутся повторным выполнением запроса каждый раз. Не следует ли сохранить содержимое запроса в состоянии представления? Есть ли способ получить предыдущие результаты запроса и повторно сортировать, не возвращаясь в базу данных? (Является ли это сохранение всех данных в состоянии представления? Если да, почему я не могу это получить? Кажется довольно глупым отправить все это в браузер пользователя и отправить все обратно, тратя всю полосу пропускания, если нет способ добраться до него.)
Кроме того, если я пытаюсь разрешить пейджинг, мне кажется, что я снова должен повторно выполнять запрос каждый раз, когда пользователь переходит на другую страницу. И если пользователь сортирует, а затем страницы, то я должен помнить, что порядок сортировки был в скрытом поле или какой-то такой, поэтому я могу перечитать данные, повторно сортировать, а затем перейти на нужную страницу.
Учитывая, что, когда вы используете элемент управления источником данных, все это поведение встроено, я думаю, что здесь что-то отсутствует. Но, учитывая все примеры, которые делают это медленным, трудным способом, если я что-то пропущу, многие другие программисты тоже этого не замечают.
Посредством «sorked magically» Я имел в виду, что если вы используете элемент управления источником данных, вам не нужно писать какой-либо код для реализации подкачки или сортировки. – Jay
Да, я знаю, как использовать данные сеанса, но мне действительно не нравится идея чего-то вроде этого: нет надежного способа сбросить данные, когда это не долго r, и поэтому он заканчивается навсегда, и вы сталкиваетесь с проблемами, если пользователь может одновременно открыть два экземпляра экрана. Сохранение в viewstate возможно, но удваивает пропускную способность. Время для чтения данных, возвращающихся по проводам, было бы больше, чем требовалось бы, чтобы требовать базу данных во многих, возможно, в большинстве случаев. Так что уверен, что он умеет, но это некрасиво. – Jay
OK Я вижу, что вы говорите ... лично я ненавижу использование элементов управления источниками данных, потому что он абстрагирует слишком много того, что происходит под капотом, но это экономит много времени.ViewState не идеальна, сеанс - это, вероятно, путь, если вы можете потратить некоторое время на то, чтобы сделать данные более надежными. – markp3rry