Мне нужно заполнить ретранслятор псевдо-связанных данных - PullRequest
1 голос
/ 20 сентября 2008

Прежде чем сделать это, я решил спросить, был ли это лучший способ. Каждый объект «Поставщик» имеет объект «Ведро». В моем повторителе мне нужно отобразить некоторые свойства от Vendor и некоторые от Bucket, а также некоторые изображения, заполненные FileSystem, которые связаны с поставщиком. Я решил, что лучший способ сделать это - связать повторитель с объектом вендора, затем в ItemDataBound я бы заполнил изображения и сегменты на основе вендора, который связан с этим конкретным элементом [e.Item.ItemIndex].

Это лучший способ сделать это?

Ответы [ 2 ]

2 голосов
/ 20 сентября 2008

Если объект Vendor может содержать только один объект Bucket, может быть целесообразно связать его все в одном повторителе верхнего уровня. Вы можете получить доступ к Bucket через простое связывание данных на верхнем уровне без переопределения ItemDataBound.

Поскольку вы, скорее всего, связываете «Продавца», у вас есть доступ к его членам в привязке данных, если вы хотите сделать это следующим образом:

<%# DataBinder.Eval (Container.DataItem, "Bucket.Property" ) %>

Вы хотите выполнить ItemDataBound, если вам необходимо «обрабатывать что-либо» во время каждой итерации привязки и вам необходим подробный доступ к каждому объекту поставщика для принятия решения.

Если объект Vendor может содержать несколько Buckets, то лучший способ получить доступ к нему - через ItemDataBound. На каждой итерации поставщика вы можете связать новый вложенный ретранслятор для отображения данных сегмента или выполнить любую функцию повторения / агрегирования, которая вам может понадобиться.

В зависимости от того, как вы хотите, чтобы он вел себя на вашем клиенте, вы можете отображать только поставщиков. Когда пользователь нажимает на поставщика (или что-то еще), вы можете выполнить AJAX-вызов на сервер, который будет извлекать данные Bucket и динамически отображать их на вашей странице. Возможно, вы захотите попробовать этот подход, если существует большое количество поставщиков вместе с их сегментами рендеринга. Это поможет повысить производительность базы данных и время рендеринга страницы в отличие от построения всего этого на стороне сервера ASPX. (Но это должно быть много данных, вы должны сделать это по соображениям удобства использования / клиента, прежде чем пытаться заслужить прирост производительности.)

2 голосов
/ 20 сентября 2008

Так я обычно и делаю, связываюсь с основным объектом и разбираюсь с деталями в ItemDataBound.

...