Я пытаюсь написать общую функцию, которая проверяет все элементы управления формами внутри данного родителя, чтобы я мог повторно заполнить значения формы позднее.Как найти элемент управления ClientID в C# .net?
хранить каждый элемент управление ID и VALUE в печенье, и я заселить элементы управления с помощью FindControl(ID)
чтобы найти элемент управления перед установкой его значения.
Все работает нормально, за исключением случаев, когда у меня есть несколько экземпляров usercontrol, внутри которых есть дочерние элементы управления.
Например, управление DateRange определяет два ... текстовые поля
<asp:TextBox ID="txtDateFrom" />
<asp:TextBox ID="txtDateTo" />
Тогда в моей форме, если у меня есть два DateRange управления ...
<my:daterange id="DateRangeA" />
<my:daterange id="DateRangeB" />
... теперь у меня есть текстовые поля, идентификаторы которых равны txtDateFrom
(и 2x txtDateTo
), таким образом, я не могу либо сохранить оба значения в файле cookie (поскольку их идентификаторы не уникальны), либо снова восстановить элементы управления с помощью FindControl()
.
Что бы я хотел, это нечто похожее на FindControl(ID)
, но вместо этого используйте CLIENTID, чтобы я мог различать дочерние элементы управления с тем же идентификатором внутри разных пользовательских элементов управления.
Я не согласен с тем, что нужно вручную сохранить полный путь ко всем элементам управления (каким-то образом), а затем использовать FindControl(IDa).FindControl(IDb).FindControl(IDc)...
(или что-то еще) для перехода к дочерним элементам управления.
Должен быть более простой способ, не так ли?
Или я подхожу к этому все неправильно? Совет оценил, спасибо.
Хм. Хорошо, поэтому я попробовал это, и хотя идентификаторы, переданные в HTML-элементы, теперь действительно уникальны, идентификатор, доступный для кода, не изменился. Спасибо за ваш совет. Тем временем я выбрал (хакерский) обходной путь и сохранил КАЖДЫЙ контроль с помощью «PARENTID +»> «+ ID», нужен он ему или нет. Таким образом, достаточно для того, чтобы последовательно находить какой-либо элемент управления, который я могу использовать: 'FindControl (PARENTID) .FindControl (ID)' – Bumpy