Привязка сетки наилучшей практики - PullRequest
2 голосов
/ 10 февраля 2010

У меня есть некоторый опыт в разработке бизнес-логики и логики баз данных, и в основном я работаю с C #. Теперь я хотел бы создать свой первый управляемый данными уровень представления данных в ASP.NET. Мне было просто интересно, как мне заполнить мои DataGrids данными.

У меня есть IList - коллекции бизнес-объектов, таких как «Клиент», которые я получаю из своего BLL. Легко привязать всю коллекцию к элементу управления, но это означает, что все открытые свойства моих бизнес-объектов отображаются в виде столбцов. Я не могу решить, какие свойства показывать, как их упорядочивать и как их отображать (например, DateTime как ShortTimeString).

Не могли бы вы сказать мне, где можно найти примеры передового опыта или рассказать, как вы решили эту проблему?

С уважением, Даниэль Ланг

Ответы [ 3 ]

2 голосов
/ 10 февраля 2010

Когда бы я ни привязывался к сетке, я всегда должен иметь свойство AutoGenerateColumns = false. Затем я явно определяю столбцы и шаблоны, которые я использую.

Я думаю, что это лучшая практика, так как следующий кодер может прийти и добавить что-то к вашему объекту и не осознавать, что он будет автоматически добавляться везде, где вы привязываете его к сетке. Это также заставляет вас рассмотреть каждое поле, чтобы увидеть, действительно ли им нужно видеть его как есть или с каким-либо типом шаблона.

Свойство AutoGenerateColumns - это одна из тех функций, которая выглядит действительно круто в демонстрациях, но в реальном мире она не так полезна и может привести к неожиданным проблемам.

0 голосов
/ 10 февраля 2010

Как было сказано @Kelsey, вы должны установить AutoGenerateColumns = false и вручную определить столбцы. Тем не менее, кажется, что вы знаете, что должны показывать только определенную информацию, но не знаете, какие фрагменты показывать и в каком формате.

Я не могу решить, какие свойства показать, как они должны быть заказаны и как они должны отображаться (например, DateTime как ShortTimeString).

Подскажите, пожалуйста, где найти примеры лучших практик или скажите мне, как Вы решили эту проблему?

Это действительно зависит от того, что наиболее полезно для пользователя вашего приложения. Задайте себе несколько вопросов. Еще лучше задать эти вопросы кому-то, кто будет использовать его, кроме вас.

Некоторые мысли:

  • Что бы заинтересовать пользователя?
  • Не просто показывать данные, чтобы показать это
  • Это должно служить какой-то цели пользователю
  • Формат DateTime - нужно ли пользователю видеть больше, чем ShortTimeString? Поможет ли знание дня им? Может быть, показать длинную строку во всплывающей подсказке и показать короткую, чтобы сэкономить место.
0 голосов
/ 10 февраля 2010

Я использую «грязную» хитрость для форматирования привязки к сеткам и т.п. Добавив свой элемент управления, вы можете (в конструкторе) выбрать его источник данных. Обычно я выбираю ObjectDataSource и на следующем экране мастера снимите флажок для отображения только объектов данных. Затем я нахожу функцию в своем BLL, с которой я собираюсь связать (или метод, который возвращает тот же источник класса / источника данных), и выбираю ее. Я просматриваю мастера, как будто я действительно привязываюсь к этому методу, и когда он закончен, элемент управления форматируется для двухсторонней привязки к этому источнику.

После этого я удаляю объект objectdatasource в форме набора источника данных элемента управления равным "NONE". Когда он предлагает перенастроить элемент управления, я просто нажимаю нет. Элемент управления теперь отформатирован и не связан. Отсюда (для GridView) вы можете перейти в Редактировать столбцы и изменить их расположение в конструкторе, отформатировать их, применить стили, настроить привязки и т. Д.

Тем не менее, я рекомендую связывать с возвратами функций, а не с двухсторонним связыванием. У нас есть конкретные объекты BLL / DAL для обработки этих операций, поэтому я использую метод для извлечения данных, а затем мы используем метод для ввода данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...