Deze configuratie toont hoe u, alleen bij sequentie VEN, een vervaldatum kan toevoegen in de klantenhistoriek (menu "Vensters"). In dit voorbeeld laten we u ook zien hoe u de vervaldatum in het vet kan zetten voor de datum van vandaag.
Dit wordt gedaan door een HistCli customizer te maken die maar één interface aanspreekt: IGridUnifiedCustomizer.
De code bevat 3 delen die verenigd worden via het GridUnifiedCustomizerContainer object:
- StringUpdater : die de SQL query kan wijzigen. Deze code wordt altijd eerst aangeroepen en wordt gebruikt om onderstaande onderdelen in te stellen.
- GridUpdater : die tegelijkertijd met FormGridCustomize werkt.
- PrefuserKeyCompl : die ons toelaat om een extra tekenreeks op te geven die de volgorde en breedte van de kolommen kan bewaren.
- Dispose : die slechts één keer kan uitgevoerd worden om het rooster weg te gooien.
Deze programmering is compatibel met het contextmenu "Opnieuw zoeken" van het rooster.
using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;
using System.Windows.Forms;
using MercatorApi;
using MercatorExtensions;
using MercatorUi;
using System.Drawing;
using MercatorUi.GridPro;
// <CompileWithRoslyn />
namespace HistCli
{
public class Customizer : MercatorUi.ICustomizers.IGridUnifiedCustomizer
{
public void GridUnifiedCustomize(GridUnifiedCustomizerContainer gridUnifiedCustomizerContainer)
{
gridUnifiedCustomizerContainer.StringUpdater = (reqSql) =>
{
string journal = Api.StrExtract(reqSql, "pieds_v.journal='", "'").TrimEnd();
if (journal == "VEN")
reqSql = reqSql.Replace("date,", "date,echeance,");
gridUnifiedCustomizerContainer.GridUpdater = () =>
{
if ((journal == "VEN") && !gridUnifiedCustomizerContainer.Grid.Columns.Contains("echeance"))
{
gridUnifiedCustomizerContainer.Grid.Columns.Add("echeance", "Echéance");
gridUnifiedCustomizerContainer.Grid.Columns["echeance"].Width = 85;
gridUnifiedCustomizerContainer.Grid.Columns["echeance"].DataPropertyName = "echeance";
gridUnifiedCustomizerContainer.Grid.Columns["echeance"].DefaultCellStyle.Format = Api.Iif(MercatorUi.Globals.DateMDY, "MM/dd/yyyy", "dd/MM/yyyy");
gridUnifiedCustomizerContainer.Grid.CellFormatting += Grid_CellFormatting;
}
else if ((journal != "VEN") && gridUnifiedCustomizerContainer.Grid.Columns.Contains("echeance"))
{
gridUnifiedCustomizerContainer.Grid.CellFormatting -= Grid_CellFormatting;
gridUnifiedCustomizerContainer.Grid.Columns.Remove("echeance");
}
};
gridUnifiedCustomizerContainer.PrefuserKeyCompl = journal == "VEN" ? journal : "";
gridUnifiedCustomizerContainer.Dispose = () =>
{
gridUnifiedCustomizerContainer.Grid.CellFormatting -= Grid_CellFormatting;
};
return reqSql;
};
}
void Grid_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
DataGridView grid = (DataGridView)sender;
if ((grid.Columns[e.ColumnIndex].Name == "echeance") && (grid.Rows[e.RowIndex].Cells["echeance"].Value != DBNull.Value))
{
if (Convert.ToDateTime(e.Value) < DateTime.Now)
e.CellStyle.Font = new Font(e.CellStyle.Font, FontStyle.Bold);
}
}
}
}