- первичная информация:
В моем последнем проекте, мне нужно иметь страницу с DropDownList с некоторыми пунктами как «ПгвЬЫате», «LastName», " Age "и т. Д. Я хочу добавить дополнительные элементы управления на страницу, когда каждый элемент выбирается пользователем. Например, если пользователь выбрать «Возраст» другой DropDownList создан динамически с этими значениями: «Меньше чем 10»
«Между 10 и 30»
«более 30»
Вот кнопка, добавить этот выбор пользователя в ListBox и позволить пользователю выбирать другие варианты. (Я сделал запрос, наконец, в соответствии с выбором пользователя и отправить его в БД)
- Что я делаю:
создать DROPDOWNLIST и установить его AutoPostBack свойство верно и добавляют некоторые элементы в нем и пользователь должен выбрать один из этих элементов. затем добавить пользователь SelectedValue из DropDownList в переменном кэше, прежде чем страница запись обратно происходит:Добавить динамические элементы управления ASP.NET с помощью DropDownList на странице
protected void DropDownListColumnNameSelectedIndexChanged(object sender, EventArgs e)
{
Cache["SelectedKey"] = dropDownListColumnName.SelectedValue;
}
Когда пользователь выбирает элемент из DropDownList * DropDownList_SelectedIndexChanged * огнь, и я должен создать элементы управления динамически в держателе места:
var textBoxName = new TextBox
{
ID = "textBoxName",
CssClass = "str-search-textbox-highlight",
ViewStateMode = ViewStateMode.Disabled
};
placeHolderFirstItem.Controls.Add(textBoxName);
- В чем проблема? При попытке добавить новый элемент управления в текущем событии Button_Click, успешно добавлен на страницу управления, но я не могу найти его placeHolderFirstItem.Controls.Find («textBoxName») фактически placeHolderFirstItem.Controls.Count всегда равна нулю. Поэтому я не могу получить значения textBoxName.Text.
Я стараюсь Google, что для любого решения, и я нашел решение, которое я должен добавить элементы управления в Page.OnInit поэтому я добавить элементы управления в перегруженной OnInit (е):
protected override void OnInit(EventArgs e)
{
if (!Page.IsPostBack) return;
var textBoxName = new TextBox
{
ID = "textBoxName",
CssClass = "str-search-textbox-highlight",
ViewStateMode = ViewStateMode.Disabled
};
placeHolderFirstItem.Controls.Add(textBoxName);
}
после выполнения этого я могу найти «textBoxName "in placeHolderFirstItem, но он срабатывает до DropDownList_SelectedIndexChanged!
так как я могу добавить новые элементы управления для размещения держателя точно, когда пользователь меняет значение dropDownList и как я могу узнать новое значение управления?
Заранее спасибо,
Mohsen.
- Обновлено:
Вот лучшее решение
(http://forums.asp.net/p/1959726/5596531.aspx?p=True&t=635244790943067485&pagenum=1)
Спасибо за ваш ответ, но предположим, что у нас около 10 - 15 элементов в dropDownList, которые должны загружать свои данные в новый dropDownList, я не думаю, что это было правильное решение для скрытия и отображения 10 - 15 элементов управления для каждый пост. Я думаю, что это не идеальное решение. – Mohsen
Мое кодированное решение не использует механизм show/hide ... и вы используете веб-формы, поэтому не так много вариантов, если вы не хотите делать все на стороне клиента, что еще более проблематично, если вы отправляете назад. –