using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class DataGrid_ColumnsTemplateXSL : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

        //Define SQL query
        string SqlQuery = @"SELECT OD.OrderID, P.ProductName, OD.UnitPrice, OD.Quantity " + 
            "FROM Products AS P INNER JOIN [Order Details] AS OD ON P.ProductID = OD.ProductID ORDER BY OD.OrderID;";


        //Get DataTable (MS Access Database)
        DataTable myDataSource = DataBase.GetDataTableOleDb(SqlQuery, "~/DataGrid/DataBases/Nwind.mdb"); 

        //Set the data source
        //myDataGrid.KeyFieldName = "OrderID"; //Disabled - not unique
        myDataGrid.DataSource = myDataSource;
        myDataGrid.DataBind();

        //Initial widths for columns 
        myDataGrid.Columns["OrderID"].Width = 80;
        myDataGrid.Columns["ProductName"].Width = 215;
        myDataGrid.Columns["UnitPrice"].Width = 100;
        myDataGrid.Columns["Quantity"].Width = 138;

        //Data formatting
        System.IFormatProvider format = new System.Globalization.CultureInfo("en-US", true);

        myDataGrid.Columns["UnitPrice"].FormatProvider = format;
        myDataGrid.Columns["UnitPrice"].FormatType = typeof(System.Decimal);
        myDataGrid.Columns["UnitPrice"].FormatString = "C";

        //Apply templates
        myDataGrid.Columns["Quantity"].Template = "~/DataGrid/Templates/Quantity.xsl";
        myDataGrid.Columns["Quantity"].CssClass = "PostalCode";
    }
}