Suivez et participez au développement du nouvel OpenCellar : PLOC.co
Home Page
 
Français  English  
Open Cellar Home Edition - 1.2 - Windows 98, Me, 2000, XP and Vista. The free Windows wine cellar management software. Open Cellar Mobile Edition - Beta 2 (French version) - Pocket PC. The free Pocket PC wine cellar management software. Open Cellar Cross Platform - Beta 1 (French version) - Mac OSX and Linux. The free MacOS/Linux wine cellar management software. My Open Cellar Open Cellar Forums Place des vins
Search: Welcome (connect - create an account )
Page settings

Nuage de tags
L'interface ITableWindow démystifiée
La fenêtre Tableur avancé permet d'afficher n'importe quelles données de votre cave. Elle intégre aussi en standard des fonctions de recherche et de tris à la manière de Microsoft Excel.

1) Présentation des classes et interfaces utilisées


2) La fenêtre ITableWindow en action



3) Exemple d'utilisation
Dans ce script nous allons afficher la liste de toutes les fiches achats de notre cave de l'année 2004

if(App.ActiveCellar == null)
{
   MessageBox.Show("Aucune cave n'est ouverte");
   return;
}

TableManager manager = new TableManager(App);

manager.BeginUpdate();

DataTable table = new DataTable("AfficherPAEx");
table.DefaultView.AllowDelete = false;
table.CaseSensitive = false;
table.DefaultView.AllowEdit = false;
table.DefaultView.AllowNew = false;

// SysId
DataColumn col = new DataColumn("SysId", typeof(string));
col.Caption = "SysId";
table.Columns.Add(col);

// Année
col = new DataColumn("Year", typeof(ushort));
col.Caption = "Année";
table.Columns.Add(col);

// Nom
col = new DataColumn("Name", typeof(string));
col.Caption = "Vin";
table.Columns.Add(col);

// Région
col = new DataColumn("Area", typeof(string));
col.Caption = "Région";
table.Columns.Add(col);

// Appellation
col = new DataColumn("Appellation", typeof(string));
col.Caption = "Appellation";
table.Columns.Add(col);

// Prix
col = new DataColumn("Price", typeof(float));
col.Caption = "Prix unitaire ";
table.Columns.Add(col);

// Achat
col = new DataColumn("Buy", typeof(ushort));
col.Caption = "Achat ";
table.Columns.Add(col);

// Consommation
col = new DataColumn("Consume", typeof(ushort));
col.Caption = "Consommation ";
table.Columns.Add(col);

// Date
col = new DataColumn("Date", typeof(DateTime));
col.Caption = "Date ";
table.Columns.Add(col);

// Commentaire fiche
col = new DataColumn("Comment", typeof(string));
col.Caption = "Commentaire fiche";
table.Columns.Add(col);

table.BeginLoadData();

// Liste des vins
ObjectCollection oc = manager.Application.ActiveCellar.GetCollection((ushort)ObjectType.Wine);

for(int i = 0; i < oc.Count; i++)
{
  Wine w = (Wine)oc[i];
  
  // Fiches achats consos
  for (int j = 0; j < w.Purchases.Count; j++)
  {
	PurchaseSales ps = (PurchaseSales)w.Purchases[j];
      	DataRow r = table.NewRow();
	r["Name"] = w.Name.Trim();
	r["Area"] = w.Area.Name.Trim();
	r["Appellation"] = w.Appellation.Name.Trim();
	r["SysId"] = w.SystemUID;
	r["Comment"] = ps.Comment.Replace("\n", " ");
	r["Year"] = w.Year;
	r["Price"] = ps.Price;	   
	r["Buy"] = ps.PurchaseBottles;
	r["Date"] = ps.Date;
	r["Consume"] = ps.ConsumeBottles;
	table.Rows.Add(r);
 }	
}

table.EndLoadData();


manager.DataSource = table;

manager.EndUpdate();

ITableWindow tableWindow = (ITableWindow)App.GetWindow(WindowType.Table, manager);
if(tableWindow == null)
{
	return;
}

tableWindow.Show();

// Affectation d'un filtre sur l'année 2004
// L'affectation doit se faire apres l'ouverture de la fenetre
IFilter filter = FilterFactory.Instance.Get(manager, manager.DataSource.Columns["Year"]); 
filter.Value = 2004; 
filter.FilterType = FilterType.Equals; 
manager.Filters.Add(filter); 
Code pour ajouter un tri à la liste

Sorting sortByYear = new Sorting(manager, manager.DataSource.Columns["Year"]);
sortByYear.SortingType = SortingType.Asc; // Croissant
// sortByYear.SortingType = SortingType.Desc; // Décroissant
manager.Sorts.Add(sortByYear);

 

Comments
 16/01/2016 03:49 - Anonyme
Thanks for stianrtg the ball rolling with this insight.
 16/01/2016 03:49 - Anonyme
Thanks for stianrtg the ball rolling with this insight.
 16/01/2016 03:49 - Anonyme
Thanks for stianrtg the ball rolling with this insight.
Write a comment

Security code


© 2006-2014 Matthieu DUCROCQ  Open Cellar official blog - All rights reserved - Last update: january 2014 | twitter