Как динамически генерировать комбинацию ASP.NET пользовательских элементов управления?

StackOverflow https://stackoverflow.com/questions/90878

  •  01-07-2019
  •  | 
  •  

Вопрос

Скажем, у меня есть несколько пользовательских элементов управления A, B, C и D.Основываясь на некоторых случайных входных данных, мне нужно сгенерировать их комбинацию.Например, дляесли входные данные являются 2a3d1a2c Мне нужно показать две пятерки, после этого 3 двойки, снова пятерку и т.д.

Мне также нужно будет стабилизировать идентификаторы клиентов, чтобы они работали корректно.Потому что каждый из этих элементов управления использует свои собственные ClientID свойство собирать исходные данные на себя.Например, дляпользовательский элемент управления A внутренне генерирует входные данные с именем this.ClientID + "$input1", и собирает свои входные данные из запроса , подобного Request[this.ClientID + "$input1"].Поскольку может быть более одного A, каждый A должен иметь одинаковый (unique) ClientID после обратной передачи, чтобы получить правильные входные данные из запроса.

Это было полезно?

Решение

Чтобы добавлять элементы управления динамически, вы можете использовать панель в качестве заполнителя, скажем

<asp:Panel ID="ControlPlaceholder" runat="server" />

Затем, на стороне сервера, вы можете добавлять к нему объекты следующим образом:

int controlCount = 0;

...

TextBox newTextBox = TextBox();
newTextBox.ID = "ctl_" + controlCount++;
ControlPlaceholder.Controls.Add(newTextBox);

Если вы добавите элементы управления к нему во время вашего события Page_Load и используете согласованный метод генерации идентификаторов элементов управления (например, простой подсчет выше), то любые привязки viewstate или event будут повторно привязаны к нужному объекту при обратной передаче.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top