Pilih dari file
select_one_from_file dan select_multiple_from_file memuat pilihan secara dinamis dari file CSV atau XML eksternal yang dilampirkan ke formulir.
select_one_from_file dan select_multiple_from_file bekerja seperti select_one dan select_multiple, tetapi alih-alih mendefinisikan pilihan dalam lembar kerja choices, pilihan dimuat dari file CSV atau XML eksternal yang dilampirkan ke formulir. Ini berguna ketika daftar pilihan Anda sangat panjang, sering berubah, atau perlu diperbarui tanpa membangun ulang seluruh formulir.
Spesifikasi XLSForm Dasar
| type | name | label |
|---|---|---|
| select_one_from_file health_facilities.csv | facility | Pilih fasilitas kesehatan |
| select_multiple_from_file crops.csv | crops | Tanaman apa yang ditanam rumah tangga? |
Nama file setelah nama tipe harus cocok dengan nama file yang Anda lampirkan saat mengunggah formulir.
Format file CSV
File CSV Anda harus memiliki setidaknya dua kolom: name (nilai yang disimpan) dan label (teks yang ditampilkan). Anda dapat menambahkan kolom ekstra berapa pun untuk pemfilteran.
health_facilities.csv:
name,label,district,type
HF001,Nairobi Central Clinic,Nairobi,clinic
HF002,Westlands Health Centre,Nairobi,health_centre
HF003,Kisumu District Hospital,Kisumu,hospital
Memfilter pilihan
Gunakan kolom choice_filter untuk hanya menampilkan pilihan yang cocok dengan konteks saat ini. Referensikan kolom CSV langsung dengan nama kolom (tanpa ${}):
| type | name | label | choice_filter |
|---|---|---|---|
| select_one districts.csv | district | Pilih kabupaten | |
| select_one_from_file health_facilities.csv | facility | Pilih fasilitas | district = ${district} |
Dalam contoh ini, hanya fasilitas di kabupaten yang dipilih yang ditampilkan. district dalam choice_filter merujuk ke kolom district dalam file CSV; ${district} merujuk ke bidang formulir bernama district.
Penggunaan
Pertanyaan pilih-dari-file umum digunakan untuk:
- Daftar pilihan yang panjang — fasilitas kesehatan, sekolah, desa, daftar spesies (ratusan atau ribuan item)
- Daftar yang sering diperbarui — ketika daftar master berubah antara putaran survei, perbarui hanya CSV tanpa membangun ulang formulir
- Data referensi bersama — satu file CSV yang digunakan di beberapa formulir
- Pilihan bertingkat yang difilter — muat semua wilayah/kabupaten/desa dalam satu file, kemudian filter berdasarkan pilihan induk
Melampirkan file
Saat Anda mengunggah formulir ke rtSurvey, lampirkan file CSV sebagai lampiran media. Nama file dalam definisi formulir harus persis cocok dengan nama file lampiran.
Nama file peka huruf besar-kecil. Health_Facilities.csv dan health_facilities.csv diperlakukan sebagai file yang berbeda.
Menggunakan choice-label() dengan from-file
Untuk menampilkan label dari pilihan yang dipilih dalam bidang catatan atau kalkulasi:
| type | name | label | calculation |
|---|---|---|---|
| select_one_from_file health_facilities.csv | facility | Pilih fasilitas | |
| calculate | facility_label | choice-label(${facility}, ${facility}) | |
| note | summary | Fasilitas yang dipilih: ${facility_label} |
Praktik Terbaik
- Jaga file CSV Anda di bawah 5.000 baris untuk kinerja yang baik di perangkat mobile.
- Selalu sertakan kolom
namedanlabel— kolom tambahan bersifat opsional. - Untuk pilihan bertingkat, gunakan satu CSV dengan kolom induk dan filter dengan
choice_filter. - Versi nama file CSV Anda (misalnya,
facilities_v3.csv) saat membuat perubahan pada struktur kolom. - Uji ekspresi pemfilteran dengan cermat — kesalahan pengetikan dalam
choice_filterakan diam-diam tidak menampilkan pilihan.
Keterbatasan
- File CSV yang sangat besar (10.000+ baris) dapat memperlambat pemuatan formulir, terutama pada perangkat kelas bawah.
- File CSV harus diunggah bersama formulir — tidak dapat diambil dari URL saat runtime (gunakan
search()ataupulldata()untuk pencarian dinamis). select_multiple_from_filekurang umum didukung di seluruh klien — verifikasi kompatibilitas sebelum menggunakannya.
Perbandingan dengan search()
select_one_from_file | Appearance search() | |
|---|---|---|
| Sumber pilihan | File CSV/XML yang dilampirkan | Kueri database sisi server |
| Bekerja offline | Ya (file dibundel) | Memerlukan konektivitas |
| Jumlah pilihan | Dibatasi oleh memori perangkat | Tidak terbatas (paginasi) |
| Data real-time | Tidak | Ya |
Untuk dataset yang besar, sering berubah, atau berbasis server, lihat Pencarian dinamis.