using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

using APNSoft.WebControls;
using System.Data.OleDb;

public class WebForm1 : System.Web.UI.Page
{

    //DataGrid declaration
    protected APNSoftDataGrid dg1; 


    private void Page_Load(object sender, System.EventArgs e)
    {
        //Set the DataGrid properties
        dg1.ID = "dg1";
        dg1.BasePage = base.Page;
        dg1.SkinFolder = "~/Skins/APNSoft/";
        dg1.KeyFieldName = "ISBN";

        //Apply server-side events
        dg1.CallTheServer += 
            new APNSoft.WebControls.DataGridEventHandler(dg1_CallTheServer);

        //Apply a client-side function to be called after the Server Response.
        dg1.ClientSideAfterCallBack = "CallTheServerResponse";

        //Define SQL query
        string SQL = @"SELECT '0' as LineNumbers, ISBN, Title, Synopsis FROM Books";

        //Create the DataTable object
        DataTable myDataTable = GetDataSource(SQL);

        //Set the data source
        dg1.DataSource = myDataTable;
        dg1.DataBind();

        //Format Columns
        dg1.Columns["LineNumbers"].LineNumbers = true;
        dg1.Columns["LineNumbers"].FormatType = typeof(System.String);
        dg1.Columns["LineNumbers"].FormatString = "{0}.";
        dg1.Columns["LineNumbers"].CssClass = "LineNumbers";
        dg1.Columns["LineNumbers"].Width = 30;
        dg1.Columns["LineNumbers"].Sortable = false;
        dg1.Columns["LineNumbers"].Resizable = false;
        dg1.Columns["LineNumbers"].HeaderText = "";

        dg1.Columns["ISBN"].Visible = false;
        dg1.Columns["Title"].Width = 220;
        dg1.Columns["Title"].HeaderText = "Book title:";
        dg1.Columns["Synopsis"].Visible = false;

        //Set the client-side function to display the row ID
        dg1.ClientSideOnSelectRow = "ClientSideOnSelectRow";
    }


    //Server-side procedure for Book Details
    private void dg1_CallTheServer(object sender, APNSoft.WebControls.DataGridEventArgs e)
    {
        //Get the Row
        GridRow myGridRow = e.GridRow;

        //Get book details
        string BookDetails = "";
        BookDetails += "<img src='" + "./Images/Books/" + myGridRow.Cells["ISBN"].Value.ToString() + ".gif" + "' />";
        BookDetails += myGridRow.Cells["Synopsis"].Value.ToString();

        //Set book details as parameter
        e.Parameter = BookDetails;
    }


    //Returns a DataTable from MS Access database
    private DataTable GetDataSource(string query)
    {
        OleDbConnection conn = new OleDbConnection();
        OleDbDataAdapter MyOleDbDataAdapter = new OleDbDataAdapter();
        DataTable myDataTable = new DataTable();
        
        conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + 
            System.Web.HttpContext.Current.Server.MapPath("~/DataBase/Books.mdb");
        
        MyOleDbDataAdapter.SelectCommand = new OleDbCommand(query,conn);
        conn.Open();

        try
        {MyOleDbDataAdapter.Fill(myDataTable);}
        finally
        {conn.Close();}

        return myDataTable;
    }



    #region Web Form Designer generated code
    override protected void OnInit(EventArgs e)
    {
        InitializeComponent();
        base.OnInit(e);
    }
    
    private void InitializeComponent()
    {    
        this.Load += new System.EventHandler(this.Page_Load);
    }
    #endregion

}