Копировать информацию из одного динамически созданного пользовательского элемента управления в другой динамически созданный пользовательский элемент управления - PullRequest
1 голос
/ 12 июня 2009

Мой ASP.NET WebForm содержит заполнитель и динамически добавляются пользовательские элементы управления. Элементы управления в основном имеют текстовые поля. Иногда есть два пользовательских элемента управления, иногда их десять. Все работает как положено. Мой вопрос о том, как реализовать новую функцию.

Мой клиент получил новый запрос на копирование данных из первого элемента управления в другой элемент управления, установив флажок, связанный с данным дополнительным элементом управления.

Сначала это звучало просто ... Добавьте флажок для заполнителя для каждого пользовательского элемента управления, а затем напишите немного JavaScript, чтобы скопировать данные из первого элемента управления в дополнительный элемент управления. Затем я понял, что из-за того, что эти текстовые поля находятся в пользовательском элементе управления, у меня нет доступа к непосредственному изменению входных данных HTML.

Затем я начал думать о добавлении флажков, которые будут автоматически отправлять сообщения обратно, но как мне динамически добавить флажок в заполнитель, а затем найти способ добавить обработчик событий в флажок и передать необходимую информацию? цикл по элементам управления и скопировать значения. Этот подход кажется слишком сложным и требует слишком много времени для достижения моей цели.

Есть предложения?

Ответы [ 2 ]

0 голосов
/ 28 декабря 2009

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

У меня была похожая ситуация, возможно, с 10-15 элементами управления пользовательского интерфейса в пользовательском элементе управления, с флажком, связанным с первым, который, когда отмечен, означал, что я должен скопировать информацию из первого пользовательского элемента управления во все элементы управления. др.

Поскольку все это было встроено в кодовый блок, я просто открыл логическое свойство пользовательского элемента управления с именем ShowCheckBox, которое переключало видимость флажка. Я установил для этого значение true в первом и false во всех остальных. Таким образом, я знал, что событие может быть вызвано только нажатием флажка первого пользовательского элемента управления. Затем в обработчике событий для этого флажка я обработал копирование с первого пользовательского элемента управления на все остальные. (Кстати, обязательно установите AutoPostBack=true на этом флажке, или вы удивитесь, почему событие не запускается.)

Javascript определенно обеспечит лучшее взаимодействие с пользователем, но это сработало для меня и не потребовало от меня выяснения, как получить значения ClientId в javascript. (Хотя это именно то, что мне нужно сделать сейчас, именно так я и наткнулся на этот вопрос. :-))

0 голосов
/ 19 сентября 2009

Вы упомянули, что, поскольку флажки находятся в пользовательском элементе управления, у вас нет к ним доступа.

Не могли бы вы раскрыть ClientID, используя свойство пользовательского элемента управления, а затем поработать с ними в JavaScript? Примерно так:

user_control {
   int checkboxId { get { return checkbox.ClientId; } }
}

Если у вас есть больше кода, который будет полезен ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...