**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)
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