TRepeater

TRepeater menampilkan kontennya secara berulang berdasarkan data yang diambil dari DataSource. Konten yang diulang dalam TRepeater disebut items sebuah kontrol yang dapat diakses melalui properti Items. Ketika dataBind() dipanggil, TRepeater membuat sebuah item untuk setiap baris data dan mengikat baris data ke item. Secara opsional, TDataList dapat mempunyai header, footer dan/atau pemisah antara item.

Tata letak dari konten yang diulang dalam TDataList ditetapkan dengan template inline. Item TDataList, header, footer, dll. diturunkan dengan template terkait saat data sedang diikat ke pengulang.

Sejak v3.1.0, tata letak juga bisa dietapkan oleh penyaji. Penyaji adalah kelas kontrol yang dapat diturunkan sebagai item datalist, header, dll. Penyaji dapat dilihat sebagai template eksternal (sebenarnya, ia juga merupakan kontrol tanpa-template). Penyaji bisa berupa kelas kontrol apapun. Dengan menggunakan penyaji, seseorang dapat menghindari penulisan panjang dan template yang kacau. Karena penyaji adalah sebuah kelas, ia juga membantu menggunakan kembali template yang sebelumnya mungkin disertekan di dalam template lain. Jika diimplementasikan dengan salah satu antarmuka berikut, penyaji akan diinisialisasi dengan properti tambahan yang relevan terhadap item penyaji:

Properti berikut dipakai untuk menetapkan tipe template dan penyaji datalist. Jika tipe konten didefinisikan dengan template dan penyaji, maka penyaji diambil lebih dulu.

Untuk mempopulasikan data ke dalam item pengulag, setel DataSource ke obyek data yang benar, seperti array, TList, TMap, atau tabel database, dan kemudian panggil dataBind() untuk pengulang. Yaitu,

class MyPage extends TPage { public function onLoad($param) { parent::onLoad($param); if(!$this->IsPostBack) { $this->Repeater->DataSource=$data; $this->Repeater->dataBind(); } } }

Ketika dataBind() dipanggil, TRepeater menjalani masa hidup seperti berikut untuk setiap baris data:

  1. buat item berdasarkan template atau penyaji
  2. setel baris data ke item
  3. munculkan event OnItemCreated
  4. tambah item sebagai kontrol anak
  5. panggil dataBind() pada item
  6. munculkan event OnItemDataBound

Biasanya anda hanya perlu mengikat data ke pengulang saat halaman yang berisi pengulang mulai diminta. Ketika halaman adalah post back, pengulang akan mengembalikan secara otomatis seluruh konten, termasuk item, header, footer dan pemisah. Akan tetapi, baris data yang terkait dengan setiap item tidak akan ditemukan kembali dan menjadi null.

Untuk mengakses data item pengulang dalam postbacks, gunakan salah satu cara berikut:

TRepeater memunculkan OnItemCommand kapan saja kontrol tombol di dalam beberapa item pengulang memunculkan event OnCommand. Oleh karena itu, anda bisa menangani semua event OnCommand di satu tempat dengan menulis pengendali event untuk event OnItemCommand.

Contoh berikut memperlihatkan bagaimana menggunakan TRepeater guna menampilkan data tabular.

TRepeater Dapat digunakan dalam situasi lebih kompleks. Sebagai contoh, kami tampilkan dalam contoh berikut bagaimana menggunakan pengulang yang diulang-ulang, misalnya pengulang dalam pengulang. Ini umum terlihat dalam penyajian data master-detail. Untuk menggunakan pengulang di dalam pengulang lain, untuk sebuah item untuk pengulang di luarnya dibuat, kita perlu menyetel sumber data detail untuk pengulang terdalam. Ini bisa dilakukan dengan merespon ke event OnItemDataBound pada pengulang terluar. Event OnItemDataBound dimunculkan setiap kali item pengulang terluar menyelesaikan penyatuan data. Dalam contoh berikut, kita mengeksploitasi event lain pada pengulang yang disebut OnItemCreated, yang dimunculkan setiap kali item pengulang (dan kontennya) baru saja dibuat. Kita respon ke event ini dengan menyetel warna latar belakang berbeda untuk item pengulang guna menyempurnakan tampilan latar belakang item berganti. Ini menghemat kita dari penulisan AlternatingItemTemplate untuk pengulang.

Selain menampilkan data, TRepeater juga bisa dipakai untuk mengumpulkan data dari pengguna. Kontrol validasi dapat ditempatkan dalam template TRepeater guna memberifikasi bahwa input pengguna sudah benar.

Demo Penyusun komponen PRADO adalah contoh yang baik atas penggunaan tersebut. Ia menggunakan pengulang untuk mengumpulkan properti komponen dan definisi event. Para pengguna juga dapat menghapus atau menyesuaikan event dan propertinya, yang diimplementasikan dengan merespon ke event OnItemCommand pada pengulang.

Lihat dalam contoh lain berikut yang memperlihatkan bagaimana menggunakan pengulang untuk mengumpulkan input pengguna.

Contoh ini memperlihatkan bagaimana menggunakan penyaji item "drop-in", tersedia sejak v3.1.0. Penyaji ini ada dalam rilis PRADO. Mereka intinya kontrol yang mengimplementasikan antarmuka IDataRenderer. Kontrol Web umum, seperti TTextBox, TLabel, semuanya mengimplementasikan antarmuka ini. Ketika kontrol tersebut adalah penyaji item yang dipakai, properti Data ditempati dengan baris data yang sedang diikat ke item pengulang.

Lebih sering, seseorang perlu mengkustomisasi tata letak item pengulang. Contoh di atas bergantng pada OnItemCreated untuk menyesuaikan penampilan pengulang. Pengulang item template lebih disukai dalam situasi ini, karena membolehkan kita untuk menyimpan tata letak dan konten yang lebih kompleks dalam sebuah item pengulang. Contoh berikut mengimplementasikan ulang contoh pengulang yang diulang-ulang menggunakan template item penyadi yang disebut RegionDisplay. seperti kita lihat, kode baru lebih mudah dimengerti dan dipelihara.