Несколько телефонных номеров в ASPxGridView

238
15 декабря 2017, 00:31

Есть страница добавления человека в базу данных (фио, адрес и т.д), также есть 4 типа телефонных номеров (рабочий, городской и др.). Мне необходимо сделать добавление нескольких телефонных номеров разных типов (2 мобильных, 3 рабочих например). Я хочу сделать это посредством компонента GridView и листом. То есть на странице добавление есть пустой грид без привязки к данным, два столбца с типами combobox и text, в комбобоксе типы телефонов (4 штуки). Как мне сделать так, чтобы я заполнил таблицу номерами (посредством встроенных функций грида, создание, сохранение и т.д) чтобы при сохранении номеров они сохранялись в пусто заранее подготовленным листом. Я просто не знаю как конкретно вытащить из текстового поля который внутри грида, где вводится номер и присвоить ему нужный тип из комбобокса и значение закинуть в переменную в листе.

Компонент ASPxGridView от DevExpress'a.

Answer 1

Нужно работать не с самим гридом (который просто отображает данные), а с этими самыми данными (моделями строк). Допустим, в простейшем случае можно использовать такую модель:

public class PhoneNumber {
  public string Name {get; set;}
  public string Number {get;set;}
}

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

Так как вы намерены сами заполнять грид данными, а не читать их из базы данных, то для привязки моделей к гриду подойдет компонент ObjectDataSource. Этот компонент полностью совместим с гридом, и в MSDN есть несколько подробных примеров, демонстрирующих как реализовать методы, которые будут автоматически вызываться для заполнения грида данными, или для сохранения изменений внесенных пользователем, если грид редактируемый.

В этих самых методах, вы будете работать только лишь с моделями, полностью абстрагируясь от грида. А значит, ваш код будет одинаково хорошо работать как и с гридом, так и с любым другим компонентом который поддерживает стандартные DataSource компоенты вообще, и ObjectDataSource в частности.

В любом случае, другого способа нет, так как грид не работает сам по себе. Только в связке с каким-нибудь DataSource. В качестве источника данных можно использовать в принципе что угодно, даже просто List. Но стандартные ASP.NET компоненты дают больше возможностей.

READ ALSO
ASP.NET Core. Защита jwt токенов

ASP.NET Core. Защита jwt токенов

Я использую в своем проекте jwt токеныКод для создания ClaimsIdentity:

365
Вызов функции из dll написанной на Delphi из C#

Вызов функции из dll написанной на Delphi из C#

Есть DLL написанная на DelphiИсходников от нее у меня нет

279
Как сжать List<byte>

Как сжать List<byte>

Во что лучше сжать List, чтобы передать по RPC unity - как таковой list по RPC не передать

227
Xamarin.Forms - Как удалить элемент из ListView

Xamarin.Forms - Как удалить элемент из ListView

В общем есть часть кода, которая использует ListViewНадо каким-то образом удалить элемент из ListView так, чтобы сразу строка удалилась

384