select_one_from_file og select_multiple_from_file fungerer ligesom select_one og select_multiple, men i stedet for at definere valgmuligheder i regnearket choices indlæses valgmulighederne fra en ekstern CSV- eller XML-fil vedhæftet formularen. Dette er nyttigt, når din valgliste er meget lang, ændres hyppigt, eller skal opdateres uden at genopbygge hele formularen.

Grundlæggende XLSForm-specifikation

typenamelabel
select_one_from_file health_facilities.csvfacilityVælg sundhedsfacilitet
select_multiple_from_file crops.csvcropsHvilke afgrøder dyrker husstanden?

Filnavnet efter typenavnet skal matche navnet på den fil, du vedhæfter, når du uploader formularen.

CSV-filformat

Din CSV-fil skal have mindst to kolonner: name (den gemte værdi) og label (den viste tekst). Du kan tilføje et vilkårligt antal ekstra kolonner til filtrering.

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
  

Filtrering af valgmuligheder

Brug kolonnen choice_filter til kun at vise valg, der matcher den aktuelle kontekst. Referer til CSV-kolonner direkte med deres kolonnenavn (ingen ${}):

typenamelabelchoice_filter
select_one districts.csvdistrictVælg distrikt
select_one_from_file health_facilities.csvfacilityVælg facilitetdistrict = ${district}

I dette eksempel vises kun faciliteter i det valgte distrikt. district i choice_filter refererer til kolonnen district i CSV-filen; ${district} refererer til formularfeltet med navnet district.

Anvendelser

Vælg-fra-fil-spørgsmål bruges typisk til:

  1. Lange valglister — sundhedsfaciliteter, skoler, landsbyer, artsister (hundreder eller tusinder af elementer)
  2. Hyppigt opdaterede lister — når masterlisten ændres mellem undersøgelsesrunder, opdateres kun CSV’en uden at genopbygge formularen
  3. Delte referencedata — én CSV-fil brugt på tværs af flere formularer
  4. Filtrerede kaskadevalg — indlæs alle regioner/distrikter/landsbyer i én fil, filtrer derefter efter det overordnede valg

Vedhæftning af filen

Når du uploader din formular til rtSurvey, vedhæftes CSV-filen som en medievedhæftning. Filnavnet i formulardefinitionen skal nøjagtigt matche filnavnet på vedhæftningen.

Brug af choice-label() med from-file

For at vise labelen for et valgt valg i en note eller et beregningsfelt:

typenamelabelcalculation
select_one_from_file health_facilities.csvfacilityVælg facilitet
calculatefacility_labelchoice-label(${facility}, ${facility})
notesummaryValgt facilitet: ${facility_label}

Bedste praksis

  1. Hold dine CSV-filer under 5.000 rækker for god ydelse på mobilenheder.
  2. Inkluder altid en name- og label-kolonne — yderligere kolonner er valgfrie.
  3. Til kaskadevalg bruges en enkelt CSV med en overordnet kolonne og filtrering med choice_filter.
  4. Versionér dine CSV-filnavne (f.eks. facilities_v3.csv) ved brudsændringer i kolonnestrukturen.
  5. Test filtreringsudtryk omhyggeligt — en tastefejl i choice_filter viser tavst ingen valg.

Begrænsninger

  • Meget store CSV-filer (10.000+ rækker) kan sænke formularindlæsningen, især på lavspecifikke enheder.
  • CSV-filer skal uploades sammen med formularen — de kan ikke hentes fra en URL ved kørselstid (brug search() eller pulldata() til dynamiske opslag).
  • select_multiple_from_file understøttes ikke så bredt på tværs af klienter — verificer kompatibilitet inden brug.
select_one_from_filesearch()-appearance
ValgkildeVedhæftet CSV/XML-filServerside-databaseforespørgsel
Fungerer offlineJa (fil er bundtet)Kræver forbindelseskvalitet
Antal valgBegrænset af enhedshukommelseUbegrænset (pagineret)
RealtidsdataNejJa

For store, hyppigt skiftende eller serverside-datasæt, se Dynamisk søgning.

Var denne side nyttig?