Так мне удалось понять это на моем собственном деле. Вы можете просто изменить код для одного из существующих шаблонов полей, чтобы делать то, что я ищу.
Как заявлено, идея состоит в том, чтобы взять текстовое поле для ввода данных на странице «Вставить» и превратить его в раскрывающийся список значений, где это выпадающее меню состоит из данных из другой таблицы. Затем пользователь выберет нужное значение и будет передано обратно в базу данных как часть процесса вставки.
Начните с создания нового элемента управления в папке FieldTemplates. Назовите его чем-то вроде DropDown. У вас будет ваш ascx, код за файлом и файл дизайнера.
Затем, возьмите код из файла ASCX для Enumeration_Edit, и скопировать его в файл ASCX для нового управления в раскрывающемся меню. Возможно, вам потребуется переименовать идентификатор элемента управления DropDownList.
С кодом позади, скопируйте код из кода элемента управления Enumeration_Edit позади и изменить их, чтобы удовлетворить потребности в раскрывающемся списке.
Ваш класс PageLoad должен выглядеть следующим образом:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
OnDataBinding();
}
SetUpValidator(RequiredFieldValidator1);
SetUpValidator(DynamicValidator1);
}
Ваш OnDataBinding должен быть настроен так:
public void OnDataBinding()
{
//Code for binding data from a query/stored proc to a dropdown should go here.
}
Держите ExtractValues () и DataControl() классы, но вы можете избавиться от класса EnumType().
Также не забудьте добавить ссылки, которые могут вам понадобиться. Сравните код для элемента управления Enumeration_Edit и нового элемента управления, чтобы понять это.
Теперь, чтобы сделать работу управления на текстовое поле для столбца вы хотите, чтобы контролировать ввод данных для. Вы можете просто добавить [UIHint("DropDown")]
в соответствующий элемент столбца для вашего неполного класса для таблицы, но это применит элемент управления ко всем экземплярам этого столбца при отображении. У меня есть настройка настраиваемых страниц для каждой из моих таблиц, и я хочу, чтобы этот элемент управления использовался для функциональных возможностей вставки определенного столбца.Таким образом, я изменил мою страницу Вставка для этой таблицы, чтобы сделать линию контролируя эту колонку, чтобы выглядеть следующим образом:
<asp:DynamicField DataField="COLUMN_NAME" UIHint="DropDown" ReadOnly="true" />
Действовать таким образом вы применятся только контроль в этой колонке на этой странице. Вам нужно установить значение ReadOnly равным true, иначе оно будет отображаться как текстовое поле ввода, а не раскрывающееся меню.
Оттуда ваша страница вставки должна иметь раскрывающийся список для ввода данных в этом столбце.
Мне нужен только этот столбец, поэтому код для привязки данных к моему выпадающему меню предназначен только для работы с этим столбцом. Вы можете написать запрос, который просматривает все значения для определенного столбца на основе столбца, к которому вы привязали элемент управления, или вам просто нужно создать свои собственные шаблоны полей для каждого столбца, в котором вам нужен выпадающий список для.
Возможно, вам поможет, если вы добавите код, чтобы показать, как вы это делаете в данный момент. – JRoughan
На самом деле мне удалось выяснить это самостоятельно в течение последних нескольких дней. Я разместил свое решение внизу. – MattD