kontrola pobieranych informacji z bazy (warstwa prezentacji)

0

Hej,

Komentarze komentarze = new Komentarze();
commentsRepeater.DataSource = KomentarzeBL.Szukaj(komentarze);
commentsRepeater.DataBind();

Mam listę obiektów (powiedzmy 10 komentarzy), przypisuję ją do DataSource, w jaki sposób mogę zrobić, aby po użyciu DataBind() na stronie pojawiło się np. pola 3 obiektów z listy? Czy jest opcja zrobienia tego bez procedur składowanych? Może jest jakiś prosty sposób na zrobienie tego z poziomu przypisania listy do DataSource?

I drugie pytanie, podobne do powyższego: W jaki sposób mogę (bez procedur składowanych) pominąć jakiś rekord z listy.

Ostatnie - w jaki sposób mogę zliczyć ilość obiektów znajdujących się w liście i przy każdym "wyplutym" obiekcie do repeatera, umieścić tą liczbę w jakiejś kontrolce np. Label (która w kodzie jest dynamicznie wstawiana, tzn pojawia się tyle razy, ile jest obiektów wygenerowanych, znajduje się w repeaterze)

Dzięki wielkie, mam nadzieję że dobrze opisałem swój problem.

0

Do niczego z w/w nie potrzebujesz 'procedur skladowanych', chyba ze pod tym pojeciem masz na mysli cos zupelnie innego niz ono znaczy. Zapytania SQL spokojnie wystarcza

Jesli chcesz aby na liscie pojawily sie jakies 3 pola z obiektow ktore jej dostarczasz, to zacznij od zdefiniowania tej liscie kolumn.. jesli zas Twoja "lista" to Repeater - w takim razie w szablonie elementu powtarzanego musisz zdefiniowac "odpowiednia liczbe odpowiednich kontrolek", a nastepnie tymże kontrolkom przypisac zrodla danych niewprost (czyli: umiescic zapis ktory poinformuje, powiedzmy, Repeatera, ze kazdemu elementowi kopiowanemu z szablonu nalezy przypisac wlasciwosc wg. podanego przez Ciebie) a robi sie to poprzez tzw. DataBinding, tutaj w bardzo specyficznej wersji: poprzez uzycie niby metod Eval albo Bind. Poszukaj troche na sieci, materialow o tym jest bardzo wiele

Jesli obecnie siedzisz w warstwie przezentacji, Komentarze to kolekcja, a KomentarzeBL to fragment Twojej warstwy biznesowej -- w takim razie, wlasnie wa metoda Szukaj powinna realizowac filtrowanie (=pomijanie tego czego nie chcesz dostac), czyli pobierac jakies ekstra parametry okreslajace kryteria filtrowania i po prostu to robic. Jesli ona nie moze z jakiegos powodu - pozostaje Ci wlasciwie tylko:

  • albo przejrzenie kolekcji 'Komentarze' i usuniecie z niej niechcianych elementow
  • albo uzycie BindingSource/BindingList [o ile w ASP.NET sa dostepne!]:
bsource.DataSource = komentarze;
bsource.Filter = "costamcochcesz";
repeater.datasource = bsource
  • reczne przepakowanie a'la LINQ:repeater.datasource = komentarze.where(comm => comm.costam<=cochcesz);
  • 100% reczne przepakowanie:
List<cos> tmp = new List<cos>();
foreach(cos in komentarze) if(costam) tmp.Add(cos);
repeater.datasource = tmp;

--
Nie mam teraz wiele czasu, ale z tego co pamietam, najprosciej numerowanie wierszy robi sie po stronie aspx, nie w kodzie, uzywajac sprytnie wyrazen wyliczanych (<%= blah %>). Sprobuj poszukac za "numerowaniem wierszy w repeaterze"</b></b>

0

Dzięki wielkie, pomogłeś mi i poradziłem sobie korzystając z "100% ręcznego przepakowania". :-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1