Добавить столбец CheckBox в GridView с сохранением

У меня есть приложение ASP.NET, которое отображает различные представления большой базы данных последовательностей белков. Когда посетитель просматривает данные, я бы хотел, чтобы он мог выбрать флажок в строке GridView, чтобы отмечать последовательности для последующей загрузки в виде заархивированного текстового файла. Я не хочу сохранять выбранные варианты, поэтому они должны быть действительны только для сеанса.

Моя идея прямо сейчас - добавить TemplateField в GridView, а затем добавить к нему CheckBox. Я намереваюсь обрабатывать события проверки и сохранять идентификаторы последовательностей в состоянии сеанса. Когда пользователь переходит на страницу загрузки, я получаю данные сеанса, отображаю список последовательностей, которые они собираются загрузить, а затем отправляю файл. Очевидно, мне также придется повторно анализировать данные сеанса при каждом переключении загрузки формы / страницы.

Так что у меня есть пара вопросов по этому поводу:

1) Я слишком много работаю? Есть ли более простой способ реализовать это?

2) Являются ли все обращения к серверу за состоянием сеанса проблемой производительности? Я могу поместить кнопку «Сохранить для загрузки» на странице, чтобы пакетное решение помогло. Обработка событий проверки кажется более терпимой к ошибкам, поскольку вы не можете случайно потерять свое состояние, если уйдете.

3) Можно ли отсортировать GridView по столбцу с установленным флажком? Я хотел бы сначала отсортировать по столбцу с установленным флажком, а затем по текущему отсортированному столбцу (например, если GridView сортируется по фамилии, сортировка по столбцу проверки, а затем по фамилии).

Если это важно, я использую C#, .NET 3.5, VS2008, и я использую простой способ перетаскивания для создания GridView из таблицы SQLServerExpress.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
3 881
2

Ответы 2

Я не уверен, что есть более простой способ сделать это, но что касается других ваших вопросов:

2.) Вам нужно решить для себя баланс между надежностью и сетевым трафиком. Если вы используете событие проверки, вы немного вернетесь на сервер. Если вы используете другое событие (потеря фокуса на сетке, явное нажатие кнопки «обновить / сохранить» или переход на другую страницу), вы сокращаете трафик за счет возможной потери информации. Это дизайнерское решение пользовательского интерфейса, на которое нет «правильного» ответа.

3.) Это возможно, хотя может и не быть автоматическим. Я знаю, что DataGridViews будет автоматически генерировать обработчики для сортировки по столбцам флажков. Я не уверен, что с обычным GridView все так просто. Есть ли причина, по которой вы используете GV, а не DGV?

DataGridView - это только Windows Forms. System.Web.UI.WebControls имеет только DataGrid и GridView.

Dana Robinson 09.10.2008 21:23

Используйте AJAX через метод страницы, чтобы отслеживать статус флажка в состоянии сеанса. Это минимизирует стоимость поездки туда и обратно.

Я не думаю, что вы сможете выполнить сортировку по флажку в GridView, поскольку вам нужно указать столбец сортировки. Вы можете сделать это, создав синтетический источник данных, который в основном объединяет сохраненную информацию о сеансе с данными из таблицы, но не с помощью SQLDataSource, подключенного непосредственно к таблице.

Другие вопросы по теме