In een SigGrid een spinner toevoegen waarvan de waarde opgenomen is in de SQL-query van de grid

0000002396     -      26-07-2025

Het doel van dit programma is om te laten zien hoe u een gepersonaliseerde SigGrid verrijkt met een spinner, waarvan de genomen waarde in de SQL query gevoed wordt in dezelfde grid. In ons voorbeeld, zal de grid de maandelijkse omzet weergeven en de spinner geeft de mogelijkheid om het jaar te kiezen. Deze instelling is van toepassing op de leverancier fiche.

De SQL-query van de grid is:

declare @debut datetime , @fin datetime
set @debut='01/01/'+ltrim(str(@year))
set @fin='01/01/'+ltrim(str(@year+1)) -- utiliser 1/1 pour éviter les problèmes de date MDY
 
select isnull(sum(case when month(date)=1 then tot_bas_fb else 0 end),0) as Januari,
    isnull(sum(case when month(date)=2 then tot_bas_fb else 0 end),0) as Februari,
    isnull(sum(case when month(date)=3 then tot_bas_fb else 0 end),0) as Maart,
    isnull(sum(case when month(date)=4 then tot_bas_fb else 0 end),0) as April,
    isnull(sum(case when month(date)=5 then tot_bas_fb else 0 end),0) as Mei,
    isnull(sum(case when month(date)=6 then tot_bas_fb else 0 end),0) as Juni,
    isnull(sum(case when month(date)=7 then tot_bas_fb else 0 end),0) as Juli,
    isnull(sum(case when month(date)=8 then tot_bas_fb else 0 end),0) as Augustus,
    isnull(sum(case when month(date)=9 then tot_bas_fb else 0 end),0) as September,
    isnull(sum(case when month(date)=10 then tot_bas_fb else 0 end),0) as Oktober,
    isnull(sum(case when month(date)=11 then tot_bas_fb else 0 end),0) as November,
    isnull(sum(case when month(date)=12 then tot_bas_fb else 0 end),0) as December,
    isnull(sum(tot_bas_fb),0) as Total
from pieds_a 
where (id_fou=@f_id) and (date>=@debut) and (date<@fin) and (type=1)

Vooraleer de grid een header heeft waarin we de spinner zullen plaatsen, hoort u een titel voor de grid in te geven in het TextF bestand.

De ID van deze grid wordt genoteerd en deze waarde wordt gebruikt in de C# code op de 841DDAADD9 plaats.

De customizer zal deze interfaces implementeren:

Op de gepersonaliseerde grid (UserDefinedGrid) zal de customizer de volgende events gebruiken:

  • HeaderCreated: bij het maken van de header voegt u de spinner toe
  • BeforeFillWithData: voeg de @year parameter toe die de waarde van de spinner bevat, voor u de SQL-query van de grid uitvoert

De code van de customizer is als volgt:

Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorUi;

namespace SigFou
{
    public class Customizer : MercatorUi.ICustomizers.IFormLoadCustomizer, MercatorUi.ICustomizers.IFormClosedCustomizer
    {
        public void FormLoadCustomize(System.Windows.Forms.Form form)
        {
            MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)form;
            if (sigForm.MovableControls.ContainsKey("841DDAADD9"))
            {
                MercatorUi.Forms.Sig.SigGrids.UserDefined userDefinedGrid = (MercatorUi.Forms.Sig.SigGrids.UserDefined)sigForm.MovableControls["841DDAADD9"];
                userDefinedGrid.HeaderCreated += userDefinedGrid_HeaderCreated;
                userDefinedGrid.BeforeFillWithData += userDefinedGrid_BeforeFillWithData;
            }
        }

        public void FormClosedCustomize(System.Windows.Forms.Form form)
        {
            MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)form;
            if (sigForm.MovableControls.ContainsKey("841DDAADD9"))
            {
                MercatorUi.Forms.Sig.SigGrids.UserDefined userDefinedGrid = (MercatorUi.Forms.Sig.SigGrids.UserDefined)sigForm.MovableControls["841DDAADD9"];
                userDefinedGrid.HeaderCreated -= userDefinedGrid_HeaderCreated;
                userDefinedGrid.BeforeFillWithData -= userDefinedGrid_BeforeFillWithData;
            }
        }

        // Voeg de spinner toe aan de header (opdat de header geen null is, voegen we een titel toe aan de grid eigenschappen)
        void userDefinedGrid_HeaderCreated(object sender, MercatorUi.MovableControls.MovableGrid.HeaderCreatedEventArgs e)
        {
            MercatorUi.Forms.Sig.SigGrids.UserDefined userDefinedGrid = (MercatorUi.Forms.Sig.SigGrids.UserDefined)sender;

            MercatorUi._BaseClasses.BindableIntegerInput spinnerYear = new MercatorUi._BaseClasses.BindableIntegerInput();
            spinnerYear.BackgroundStyle.Class = "DateTimeInputBackground";
            spinnerYear.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            spinnerYear.Increment = 1;
            spinnerYear.Size = new System.Drawing.Size(51, 20);
            spinnerYear.Location = new System.Drawing.Point(userDefinedGrid.Header.Width - 15 - spinnerYear.Width, 10);
            spinnerYear.Anchor = System.Windows.Forms.AnchorStyles.Right;
            spinnerYear.MaxValue = 2099;
            spinnerYear.MinValue = 2014;
            spinnerYear.ShowUpDown = true;
            spinnerYear.Value = DateTime.Now.Year;
            spinnerYear.Name = "spinnerYear";
            spinnerYear.ValueChanged += spinnerYear_ValueChanged;
            userDefinedGrid.Header.Controls.Add(spinnerYear);
            EventHandler headerDisposed = null;
            headerDisposed = (s, ev) =>
            {
                spinnerYear.ValueChanged -= spinnerYear_ValueChanged;
                userDefinedGrid.Header.Disposed -= headerDisposed;
            };
            userDefinedGrid.Header.Disposed += headerDisposed;
        }

        // Wanneer we de waarde van de spinner veranderen forceren we een refresh van de grid
        void spinnerYear_ValueChanged(object sender, EventArgs e)
        {
            MercatorUi._BaseClasses.BindableIntegerInput spinnerYear = (MercatorUi._BaseClasses.BindableIntegerInput)sender;
            MercatorUi.Forms.Sig.SigGrids.UserDefined userDefinedGrid = (MercatorUi.Forms.Sig.SigGrids.UserDefined)spinnerYear.Parent.Parent;
            userDefinedGrid.FillWithData();
        }

        // De waarde van de spinner doorgeven als extra SQL-parameter
        void userDefinedGrid_BeforeFillWithData(object sender, MercatorUi.Forms.Sig.SigGrids.UserDefined.BeforeFillWithDataEventArgs e)
        {
            MercatorUi.Forms.Sig.SigGrids.UserDefined userDefinedGrid = (MercatorUi.Forms.Sig.SigGrids.UserDefined)sender;
            MercatorUi._BaseClasses.BindableIntegerInput spinnerYear = (MercatorUi._BaseClasses.BindableIntegerInput)userDefinedGrid.Header.Controls["spinnerYear"];
            e.ListSqlParams.Add(new MercatorSqlParam("@year", spinnerYear.Value));
        }
    }
}

 



Functionele cookies: Cookies die nodig zijn voor het gebruik van de website en voorkeurscookies. Ze bevatten geen persoonsgegevens. (Meer informatie)

Analytische cookies: Verzamelen van statistieken met betrekking tot het gedrag van internetgebruikers. (Meer informatie)

Marketingcookies: Om bezoekers op verschillende websites te volgen voor advertentiedoeleinden. (Meer informatie)