문제

이 작업을 수행하기 전에 이것이 최선의 방법인지 물어볼 것이라고 생각했습니다.각 "공급업체" 개체에는 "버킷" 개체가 있습니다.내 리피터에서는 공급업체의 일부 속성과 Bucket의 일부 속성을 표시해야 하며, 공급업체에 연결된 FileSystem으로 채워진 일부 이미지도 표시해야 합니다.이를 수행하는 가장 좋은 방법은 리피터를 공급업체 개체와 바인딩한 다음 ItemDataBound에서 해당 특정 항목[e.Item.ItemIndex]에 바인딩된 공급업체를 기반으로 이미지와 버킷을 채우는 것입니다.

이것이 이 문제를 해결하는 가장 좋은 방법입니까?

도움이 되었습니까?

해결책

Vendor 개체가 단일 Bucket 개체만 보유할 수 있는 경우 단일 최상위 반복기에 모든 개체를 바인딩하는 것이 적절할 수 있습니다.ItemDataBound를 재정의하지 않고 최상위 수준에서 간단한 데이터 바인딩을 통해 버킷에 액세스할 수 있습니다.

"Vendor"를 바인딩할 가능성이 높기 때문에 다음과 같은 방식으로 수행하려는 경우 데이터 바인딩의 해당 멤버에 액세스할 수 있습니다.

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

각 바인딩 반복 중에 "뭔가를 처리"해야 하고 의사 결정을 위해 각 Vendor 개체에 대한 자세한 액세스가 필요한 경우 ItemDataBound를 수행하려고 합니다.

Vendor 객체가 여러 버킷을 보유할 수 있는 경우 해당 버킷에 액세스하는 가장 좋은 방법은 ItemDataBound를 이용하는 것입니다.공급업체의 각 반복에서 새 중첩 반복기를 바인딩하여 버킷 데이터를 표시하거나 필요한 반복/집계 기능을 수행할 수 있습니다.

클라이언트에서 어떻게 작동하기를 원하는지에 따라 공급업체만 렌더링할 수 있습니다.사용자가 공급업체(또는 무엇이든)를 클릭하면 버킷 데이터를 검색하고 이를 페이지에 동적으로 렌더링하는 서버에 대한 AJAX 호출을 수행할 수 있습니다.버킷이 렌더링되는 공급업체 수가 많은 경우 해당 접근 방식을 시도해 볼 수 있습니다.이는 ASPX 서버 측에서 모든 것을 구축하는 것과 대조적으로 데이터베이스 성능 및 페이지 렌더링 시간에 도움이 됩니다.(그러나 이는 많은 양의 데이터가 필요하므로 성능 향상을 시도하기 전에 유용성/클라이언트 이유로 수행해야 합니다.)

다른 팁

이것이 제가 일반적으로 진행하는 방식입니다. 기본 개체를 바인딩하고 ItemDataBound의 세부 정보를 처리합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top