Outils pour utilisateurs

Outils du site


lua:listes_liees

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
lua:listes_liees [2022/10/24 12:15] – supprimée - modification externe (Unknown date) 127.0.0.1lua:listes_liees [2022/10/24 12:15] (Version actuelle) – ↷ Page déplacée de info:lua:listes_liees à lua:listes_liees admin
Ligne 1: Ligne 1:
  
 +**Les listes liées**
 +
 +Voici un petit tuto pour élaborer un formulaire contenant 2 listes liées
 +
 +{{ :lua:produit.png?200 |}}
 +
 +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)
 +
 +<code lua>
 +function Produit:ActionOnLoaded()
 +  self:loadComboboxFromTable("categories","categorie","cbxCat")
 +end
 +</code> 
 +
 +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
 +
 +<code lua>
 +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
 +</code> 
 +
 +Voici le code complet :
 +
 +<code lua>
 +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
 +</code>
lua/listes_liees.txt · Dernière modification : 2022/10/24 12:15 de admin