Я хочу создать многопользовательский пользовательский элемент управления, который позволяет пользователю создавать и удалять теги.Usercontrol, который динамически генерирует список элементов управления при обратной передаче
Он должен иметь текстовое поле, в котором пользователь может ввести имя тега и кнопку для отправки тега.
После опускания тега он должен динамически создавать метку с именем тега с помощью кнопки «X», чтобы удалить ее для каждого введенного тега.
Что-то вроде этого:
[ Textbox ] [Submit]
[X] Tag 1
[X] Tag 2
[X] Tag 3
Проблема в том, что я не могу понять, как сделать все работает должным образом.
Selector.ascx
< markup for the textbox >
< markup for the sumbit button >
<asp:Placeholder runat="server" ID="PHList" />
Я использую жерех: Заполнитель для создания динамических элементов управления.
Selector.ascx.cs
мне нужно следить за сгенерированных управления между обратными передачами.
Я использую List<string>
сохраненную в ViewState:
private List<string> SelectedTags
{
get
{
return (List<string>) ViewState["SelectedTags"];
}
set { ViewState["SelectedTags"] = value; }
}
При нажатии на кнопку отправки, добавить новый тег в списке SelectedTags и вызовите функцию RefreshPlaceholder:
void RefreshPlaceholder()
{
PHList.Controls.Clear();
foreach(var x in SelectedTags)
{
// generate a label and the "X" button, wiring it with a lambda
}
}
Когда я нажимаю кнопку отправки, новая новая (кнопка, метка) пара правильно сгенерирована и отображается после обратной передачи.
Однако, когда я нажимаю любую из сгенерированных кнопок «X», я получаю сообщение об ошибке, потому что событие клика, запускаемое динамически сгенерированной кнопкой, больше не может найти кнопку отправителя, так как оно еще не создано.
Если я пытаюсь сгенерировать кнопки в OnLoad, возникает одна и та же проблема, поскольку события обратной передачи происходят до Page.Load.
Если я пытаюсь сгенерировать кнопки в OnInit, ViewState еще не обновлен, поэтому сгенерированный список будет устаревшим, так как список ViewTate SelectedTags еще не обновлен.
Я не могу найти решение, чтобы все работало по назначению. Что я делаю не так?
Вы можете, конечно же, сгруппировать список кнопок, чтобы отобразить его на странице на каком-либо пользовательском мероприятии – Mir