Outils pour utilisateurs

Outils du site


lua:listes_liees

Les listes liées

Voici un petit tuto pour élaborer un formulaire contenant 2 listes liées

Une première liste déroulante (cbxCat) contient la liste des catégories de produit La deuxième liste déroulante (cbxProduit) contient la liste de produits de la catégorie sélectionnée dans la liste déroulante précédente

La première liste est chargée à partir d'une requête (faite avec l'assistant) au chargement du formulaire (ActionOnLoaded)

function Produit:ActionOnLoaded()
  self:loadComboboxFromTable("categories","categorie","cbxCat")
end

La deuxième liste est chargée lorsque la sélection de la première liste change (ActionOnChange) On récupére la catégorie sélectionnée dans la propriété “text” de la la liste déroulante “cbxCat” On construit la requête en conséquence Puis on charge la liste déroulante

function Produit:cbxCatActionOnChange()
  local dataset=nsbase.datasetCreate("SQLQuery")
  local cat=self.setProperty('cbxCat.text')
  dataset.sql="select distinct produit from produits where categorie='" .. cat .. .. "' order by 1"
  self.setProperty('cbxProduit.items',dataset.getItems('produit'))
end

Voici le code complet :

function Produit:ActionOnLoaded()
  self:loadComboboxFromTable("categories","categorie","cbxCat")
end
 
function Produit:loadComboboxFromTable(tableName,fieldName,combobox)
  local dataset=nsbase.datasetCreate("SQLQuery")
  dataset.sql='select distinct ' .. fieldName .. ' from ' .. tableName .. ' order by 1'
  self.setProperty(combobox .. '.items',dataset.getItems(fieldName))
end   
 
function Produit:cbxCatActionOnChange()
  local dataset=nsbase.datasetCreate("SQLQuery")
  local cat=self.setProperty('cbxCat.text')
  dataset.sql="select distinct produit from produits where categorie='" .. cat .. .. "' order by 1"
  self.setProperty('cbxProduit.items',dataset.getItems('produit'))
end

lua/listes_liees.txt · Dernière modification: 2021/02/24 06:54 de admin