В качестве обходного пути для того, что asp: Checkboxes не имеет значений, я пытаюсь динамически создавать идентификаторы флажков в DataList, чтобы он вставлял первичные ключи в идентификатор управления. Это удивительно сложно.Создание динамических элементов управления DataList с идентификаторами на основе связанных данных
Я поместил PlaceHolder в свой ItemTemplate DataList, а затем в ItemCreated создаю флажки с помощью string.Format("Checkbox{0}", DataBinder(e.Item.DataItem, "ID"))
. Проблема в том, что это работает только в состоянии без обратной передачи, так как при обратной передаче DataItem имеет значение null. И, конечно, ItemDataBound не вызывается в PostBack, так что это тоже не сработает.
Я не могу найти хороший способ справиться с этим if (IsPostback) dataList.Bind()
, который я не думаю, что это хороший способ сделать это.
Может ли кто-нибудь предоставить мне какие-либо альтернативы здесь?
EDIT:
Дополнительная информация. Я просто понял, что часть проблемы связана с тем, что на самом деле у меня есть DataList в DataList. Причина, по которой DataItem имеет значение null, заключается в отсутствии привязки данных при обратной передаче, а дочерние данные не сохраняются в viewstate.
В принципе, я делаю это This, хотя использует DataList, а не ретранслятор. Таким образом, при обратной передаче коллекция «Дети» не устанавливается, потому что ItemDataBound не вызывается для обратной передачи.
EDIT2: Чтобы прояснить проблему, в основном из-за вложенных данных. Я должен установить источник данных вложенного datalist в поле коллекции из отдельных строк отдельных строк данных. На обратной стороне нет привязки данных, поэтому она не работает.
Хотя ваше решение будет работать в одном DataList, оно не работает для вложенного. Проблема в том, что второй список данных создается динамически, затем его элементы управления создаются динамически. И вы должны установить источник данных для второго справочника по каталогу, что означает, что он не будет сериализован в viewstate. Таким образом, при обратной передаче нет источника данных для установки. –
На самом деле, я был неправ. Этот подход позволяет мне удалить созданный флажок для создания кода и позволить шаблону сделать это, таким образом, он будет сериализован при обратной передаче. Не идеальное решение, но оно работает. –