' Il seguente frammento di codice mostra come aggiungere una colonna con un campo calcolato alla griglia BROWSE_INDICE contenente l'indice ' dei documenti nella maschera DOCUMENT97.ASPX. In particolare viene aggiunta una colonna in prima posizione che visualizza un "semaforo" il cui colore (rosso, giallo, verde) dipende ' dal valore di un altro campo, e viene determinato tramite una query ' Lo script va inserito nello "Script Creazione" della grid o di altro oggetto del form ' NOTA: questo snippet si applica alla versione 2019 o successiva, per via dell'utilizzo del metodo Load_Records. dim form as DOCUMENT=this.page if left(form.form_state.subid,5)="VIACT" and not form.isPostback ' Si applica solo alla categoria con codice "VIACT" addhandler ctype(form.form_state.dmd_ref.DOCUMENT,QWTable).OnOpen,sub (ByVal DOCUMENT As object) ' Definisce il campo per il semaforo ' Lo deve fare nell'OnOpen in quanto la query DOCUMENT viene aperta più volte Dim f As QWField = New QWField f.Fieldname = "SEMAFORO" AddHandler f.BeforeGetValue, Sub(ByVal sender As Object, ByRef new_val As Object) If Not DOCUMENT.Rowset.endofset Then Dim par As AssocArray = New AssocArray par("TIPO") = DOCUMENT.Rowset.Fields("TIPO").Value par("TIPO_CONT") = DOCUMENT.Rowset.Fields("TIPO_CONT").Value par("NUMERO") = DOCUMENT.Rowset.Fields("NUMERO").Value par("IND_REV") = DOCUMENT.Rowset.Fields("IND_REV").Value dim msg as string dim q as qwtable dim ss as string ss="SELECT datediff(dd,DATE3,getdate()), flag1 " ss+="FROM DOCUMENT " ss+="WHERE (TIPO = :TIPO) AND (TIPO_CONT = :TIPO_CONT) AND (NUMERO = :NUMERO) AND (IND_REV = :IND_REV) and DATE3 is not null" q=OpenTable(form,ss,par,false,false,msg) if empty(msg) then if q.rowset.count() > 0 then if q.rowset.fields(2).value = true then ' VERDE new_val = "<img src='./images/2090.gif'>" else if q.rowset.fields(1).value >= 0 then ' ROSSO' new_val = "<img src='./images/2092.gif'>" else ' GIALLO' new_val = "<img src='./images/2091.gif'>" end if end if else new_val = "" end if Else new_val = "" End If CloseTable(form,q) Else new_val = "" End If End Sub f.ReadOnly = True f.length = 50 f.iscalculated = true DOCUMENT.Rowset.Fields.Add(f) End Sub ' Riattiva DOCUMENT per far scattare l'OnOpen e aggiungere il campo alla prima attivazione form.Load_Records() ' Definisce la colonna per il semaforo Dim g As qwWebControls.QWWebGrid g = form.FindControl2("BROWSE_INDICE") Dim col As Infragistics.WebUI.UltraWebGrid.UltraGridColumn = New Infragistics.WebUI.UltraWebGrid.UltraGridColumn col.Key = "SEMAFORO" col.BaseColumnName = "SEMAFORO" col.Width = New System.Web.UI.webControls.Unit(22) col.HeaderText = "" col.HTMLEncodeContent = False g.Columns.insert(0, col) g.RefreshControl() ' Deve rinfrescare la griglia dopo l'aggiunta della colonna e del beforegetvalue end if