Griglia: disabilitazione dell’editing su una colonna in base al valore di un’altra

' Il seguente snippet deve essere inserito nell'EventoRender e consente di disabilitare l'editing di una colonna nel caso un'altra colonna contenga un determinato valore. Alle colonne disabilitate viene anche applicato uno stile differente.
' Come si può notare, la disabilitazione avviene sull'intera colonna, mentre lo stile viene applicato cella per cella e riga per riga.
' Affinchè il codice funzioni correttamente, è necessario assegnare anche l'EventoCambia della colonna il cui valore determina la disabilitazione. Questo per fare in modo che non appena il valore viene modificato la disabilitazione stessa venga correttamente assegnata.
dim style as string
dim g as QWWebControls.QWWebGrid2 = form.findcontrol("Griglia1")
style="<style type=""text/css"">"
style+="  .Disabled{background-color:red !important}"  ' Colore rosso
style+="</style>"

dim l as new System.Web.Ui.WebControls.literal

l.text = style
g.parent.controls.add(l)

if form.findcontrol("Griglia1").readfield("CUSTOM1")<>"A"
	' Se il valore della prima colonna non è "A", disabilita la seconda colonna
	' N.B. la disabilitazione è fatta sulla riga corrente, ovviamente
	form.findcontrol("Griglia1").SetColumnReadOnly("CUSTOM2",true) ' Disabilita la seconda colonna utilizzando il nome del campo collegato
else
	form.findcontrol("Griglia1").SetColumnReadOnly("CUSTOM2",false) 
End If

For Each r As Infragistics.Web.UI.GridControls.GridRecord In g.rows
	if r.items(0).Value<>"A"
		' Se il valore della prima colonna non è "A", disabilita la seconda colonna
		r.items(1).CssClass = "Disabled" 
	else
		' Riabilita la colonna
		r.items(1).CssClass = "" 
	end if
Next