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

typenamelabel
select_one_from_file health_facilities.csvfacilityPilih fasilitas kesehatan
select_multiple_from_file crops.csvcropsTanaman 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 ${}):

typenamelabelchoice_filter
select_one districts.csvdistrictPilih kabupaten
select_one_from_file health_facilities.csvfacilityPilih fasilitasdistrict = ${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:

  1. Daftar pilihan yang panjang — fasilitas kesehatan, sekolah, desa, daftar spesies (ratusan atau ribuan item)
  2. Daftar yang sering diperbarui — ketika daftar master berubah antara putaran survei, perbarui hanya CSV tanpa membangun ulang formulir
  3. Data referensi bersama — satu file CSV yang digunakan di beberapa formulir
  4. 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.

Menggunakan choice-label() dengan from-file

Untuk menampilkan label dari pilihan yang dipilih dalam bidang catatan atau kalkulasi:

typenamelabelcalculation
select_one_from_file health_facilities.csvfacilityPilih fasilitas
calculatefacility_labelchoice-label(${facility}, ${facility})
notesummaryFasilitas yang dipilih: ${facility_label}

Praktik Terbaik

  1. Jaga file CSV Anda di bawah 5.000 baris untuk kinerja yang baik di perangkat mobile.
  2. Selalu sertakan kolom name dan label — kolom tambahan bersifat opsional.
  3. Untuk pilihan bertingkat, gunakan satu CSV dengan kolom induk dan filter dengan choice_filter.
  4. Versi nama file CSV Anda (misalnya, facilities_v3.csv) saat membuat perubahan pada struktur kolom.
  5. Uji ekspresi pemfilteran dengan cermat — kesalahan pengetikan dalam choice_filter akan 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() atau pulldata() untuk pencarian dinamis).
  • select_multiple_from_file kurang umum didukung di seluruh klien — verifikasi kompatibilitas sebelum menggunakannya.
select_one_from_fileAppearance search()
Sumber pilihanFile CSV/XML yang dilampirkanKueri database sisi server
Bekerja offlineYa (file dibundel)Memerlukan konektivitas
Jumlah pilihanDibatasi oleh memori perangkatTidak terbatas (paginasi)
Data real-timeTidakYa

Untuk dataset yang besar, sering berubah, atau berbasis server, lihat Pencarian dinamis.

Apakah halaman ini membantu?