DataTplProductList.cs
- //
- // This code is part of Document Solutions for Word demos.
- // Copyright (c) MESCIUS inc. All rights reserved.
- //
- using System;
- using System.IO;
- using System.Drawing;
- using System.Collections.Generic;
- using System.Text;
- using System.Data;
- using System.Linq;
- using System.Globalization;
- using GrapeCity.Documents.Word;
-
- namespace DsWordWeb.Demos
- {
- // This data template sample loads a DOCX that was created in MS Word,
- // and contains a table with data template tags. It then creates a DataSet,
- // loads the DsNWind.xml data base into it, and builds a product list
- // from tables in that data set. The product list is set as the template
- // data source on the document, and the template is processed to build
- // the final document with actual data.
- public class DataTplProductList
- {
- public GcWordDocument CreateDocx(string[] sampleParams)
- {
- var doc = new GcWordDocument();
-
- // Load the template DOCX:
- doc.Load(Path.Combine("Resources", "WordDocs", sampleParams[3]));
-
- using var ds = new DataSet();
- // Load the data and build the product list data source:
- ds.ReadXml(Path.Combine("Resources", "data", "DsNWind.xml"));
-
- DataTable dtProds = ds.Tables["Products"];
- DataTable dtSupps = ds.Tables["Suppliers"];
-
- var products =
- from prod in dtProds.Select()
- join supp in dtSupps.Select()
- on prod["SupplierID"] equals supp["SupplierID"]
- orderby prod["ProductName"]
- select new
- {
- ProductID = prod["ProductID"],
- ProductName = prod["ProductName"],
- Supplier = supp["CompanyName"],
- QuantityPerUnit = prod["QuantityPerUnit"],
- UnitPrice = prod["UnitPrice"]
- };
-
- // Add the data source to the data template data sources:
- doc.DataTemplate.DataSources.Add("ds", products);
-
- // The document already has all the necessary bindings,
- // so we only need to process the data template:
- doc.DataTemplate.Process(CultureInfo.GetCultureInfo("en-US"));
-
- // Done:
- return doc;
- }
-
- public GcWordDocument CreateDocx(int paramIdx = 0)
- {
- return CreateDocx(GetSampleParamsList()[paramIdx]);
- }
-
- public static List<string[]> GetSampleParamsList()
- {
- // Strings are name, description, info, template docx:
- return new List<string[]>()
- {
- new string[] { "@data-templates/Product List",
- "Load a template DOCX and bind it to a product list from an XML data set", null,
- "ProductListTemplate.docx" },
- new string[] { "@data-templates/Formatter Chain",
- "Load a template that uses chained formatters to highlight products that cost $50+", null,
- "ProductListTemplate-cond.docx" },
- };
- }
- }
- }
-