//------------------------------------
//Florence Li
//10/14/2005
//fzli@csi-soft.com
//------------------------------------
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 System.Configuration;
using System.Text;
namespace DataGridWithTreeMesu
{
/// <summary>
/// Summary description for HeaderTextWithTreeMenu.
/// </summary>
public class HeaderTextWithTreeMenu : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid DataGrid1;
protected System.Web.UI.WebControls.Button bnDate;
private bool bCheckIE = false;
private string strChangeDateFormat = string.Empty;
private string strBrowser = string.Empty;
private string strDateFormat = string.Empty;
private string strTimeFormat = string.Empty;
private ArrayList alCells = new ArrayList();
private ArrayList alData = new ArrayList();
private ArrayList al = new ArrayList();
private string strMsg = "";
private void Page_Load(object sender, System.EventArgs e)
{
//User Agent
string strBrowser = Request.UserAgent;
//Check if it's IE
bCheckIE = CheckIE(strBrowser);
//Get date format
GetDateFormat();
//strScriptDir from AppSettings["ScriptDir"]
string strScriptDir = ConfigurationSettings.AppSettings["ScriptDir"];
//Date Menu
DateMenu(strBrowser, strScriptDir);
//Create datasource
string str1= "Smealy,Joe,2001.303,11:10,101";
string str2= "Tom,Blankensmith,2004.140,23:01,102";
string str3= "Mary,James,2005.200,6:03,103";
al.Add(str1);
al.Add(str2);
al.Add(str3);
for(int i = 0; i < al.Count; i++)
{
alData = GetCellData(al[i].ToString());
}
this.BindDataGid(alData);
//strDateFormat from AppSettings["DateFormat"]
strDateFormat = ConfigurationSettings.AppSettings["DateFormat"].ToLower();
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.bnDate.Click += new System.EventHandler(this.bnDate_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
/// <summary>
/// BindDataGid
/// </summary>
/// <PARAM name="alData">ArrayList</PARAM>
private void BindDataGid(ArrayList alData)
{
this.SetHeadText();
DataGrid1.DataSource = alData;
DataGrid1.DataBind();
}
#region Text Headings
/// <summary>
/// SetHeadText: "Date"
/// </summary>
private void SetHeadText()
{
string headtext = "";
//date from AppSettings["HeaderDate"]
string date = ConfigurationSettings.AppSettings["HeaderDate"];
if(date.Length > 0)
{
//Note add an "onMouseOver" event
headtext =
"<a href='#'"+" onMouseOver='HM_f_PopUp(\"elMenu1\",event)'"+" onclick='javascript:document.getElementById(\"{0}\").click();'>" + date +"</a>";
}
else
{
headtext =
"<a href='#'"+" onMouseOver='HM_f_PopUp(\"elMenu1\",event)'"+" onclick='javascript:document.getElementById(\"{0}\").click();'>Date</a>";
}
//Set Header Text
this.DataGrid1.Columns[2].HeaderText = string.Format(headtext,this.bnDate.ClientID);
}
#endregion
/// <summary>
/// GetCellData
/// </summary>
/// <PARAM name="strRow">string</PARAM>
private ArrayList GetCellData(string strRow)
{
string [] cells = null;
Person myPerson = new Person();
cells = strRow.Split(',');
//Get cells
for(int iCel=0; iCel<cells.Length; iCel++)
{
//Date format
string strDate = "";
MyDateTime dateTime = new MyDateTime();
string strTempDate =cells[2].ToString();
if(strDateFormat == "yyyy.ddd")
{
strDate =strTempDate;
}
else
strDate = dateTime.JulianToGregorian(strTempDate, strDateFormat);
myPerson.LastName = cells[0].ToString();
myPerson.FirstName = cells[1].ToString();
myPerson.Date = strDate;
myPerson.Time = cells[3].ToString();
myPerson.PersonID = cells[4].ToString();
}
alData.Add(myPerson);
//return row data
return alData;
}
/// <summary>
/// DateMenu
/// </summary>
/// <PARAM name="strBrowser">string</PARAM>
/// <PARAM name="strScriptDir">string</PARAM>
private void DateMenu(string strBrowser, string strScriptDir)
{
StringBuilder sb = new StringBuilder();
bool IsSecure;
string strAddress = "";
IsSecure = Request.IsSecureConnection;
Uri MyUrl = Request.Url;
string strUri = MyUrl.AbsoluteUri;
string strScriptName = MyUrl.AbsoluteUri;
if (IsSecure==true )
{
strAddress = MyUrl.AbsoluteUri.Replace("http", "https");
}
else
{
strAddress = MyUrl.AbsoluteUri;
}
string strHrefParam,strSortDate;
string strGregorian1,strGregorian2,strGregorian3,strGregorian4;
string strJulian;
strHrefParam = "ChangeDateFormat=" + strChangeDateFormat;
strSortDate = strAddress + "?" + strHrefParam +
"&DateFormat=" + strDateFormat;
strGregorian1 = strAddress + "?" + strHrefParam +
"&DateFormat=" + "mm/dd/yyyy" ;
strGregorian2 =strAddress + "?" + strHrefParam +
"&DateFormat=" + "dd/mm/yyyy";
strGregorian3 = strAddress + "?" + strHrefParam +
"&DateFormat=" + "mm/dd/yy";
strGregorian4 = strAddress + "?" + strHrefParam +
"&DateFormat=" + "dd/mm/yy";
strJulian = strAddress + "?" + strHrefParam +
"&DateFormat=" + "yyyy.ddd";
sb.Append("<script language='JavaScript1.2'>" + "\n\r");
sb.Append("var varDate ='" + strSortDate + "'; " +"\n\r");
sb.Append("var varGregorian1 ='" + strGregorian1 + "'; " + "\n\r");
sb.Append("var varGregorian2 ='" + strGregorian2 + "'; " + "\n\r");
sb.Append("var varGregorian3 ='" + strGregorian3 + "'; " + "\n\r");
sb.Append("var varGregorian4 ='" + strGregorian4 + "'; "+ "\n\r");
sb.Append("var varJulian ='" + strJulian + "'; " + "\n\r");
if(bCheckIE==true)
{
sb.Append ("HM_Array1 = [");
sb.Append (" [90], ");
sb.Append (" ['Others', varDate, 1,0,0],");
sb.Append (" ['Format Date','',1,0,1] ");
sb.Append (" ];" + "\n\r");
sb.Append ("HM_Array1_2 = [");
sb.Append (" [],");
sb.Append (" ['MM/DD/YYYY', varGregorian1 ,1,0,0],");
sb.Append (" ['DD/MM/YYYY', varGregorian2 ,1,0,0],");
sb.Append (" ['MM/DD/YY', varGregorian3 ,1,0,0],");
sb.Append (" ['DD/MM/YY', varGregorian4 ,1,0,0],");
sb.Append (" ['YYYY.DDD', varJulian ,1,0,0] ");
sb.Append (" ] " + "\n\r");
}
else
{
sb.Append ("HM_Array1 = [");
sb.Append (" [90], ");
sb.Append (" ['Sort Date', varDate, 1,0,0],");
sb.Append (" ['MM/DD/YYYY', varGregorian1 ,1,0,0],");
sb.Append (" ['DD/MM/YYYY', varGregorian2 ,1,0,0],");
sb.Append (" ['MM/DD/YY', varGregorian3 ,1,0,0],");
sb.Append (" ['DD/MM/YY', varGregorian4 ,1,0,0],");
sb.Append (" ['YYYY.DDD', varJulian ,1,0,0] ");
sb.Append (" ]" + "\n\r");
}
sb.Append ("HM_DOM = (document.getElementById) ? true : false;" + "\n\r");
sb.Append ("HM_NS4 = (document.layers) ? true : false;" + "\n\r");
sb.Append ("HM_IE = (document.all) ? true : false;" + "\n\r");
sb.Append ("HM_IE4 = HM_IE && !HM_DOM;" + "\n\r");
sb.Append ("HM_Mac = (navigator.appVersion.indexOf('Mac') != -1);" + "\n\r");
sb.Append ("HM_IE4M = HM_IE4 && HM_Mac;" + "\n\r");
sb.Append ("HM_IsMenu = (HM_DOM || HM_NS4 || (HM_IE4 && !HM_IE4M));" + "\n\r");
sb.Append ("HM_BrowserString = HM_NS4 ? 'NS4' : HM_DOM ? 'DOM' : 'IE4';" + "\n\r");
sb.Append ("if(window.event + '' == 'undefined') event = null;" + "\n\r");
sb.Append ("function HM_f_PopUp(){return false};" + "\n\r") ;
sb.Append ("popUp = HM_f_PopUp;" + "\n\r");
sb.Append ("</script>" + "\n\r");
sb.Append ("\n\r");
sb.Append ("<script language='JavaScript' src='"+strScriptDir+ "/web_menu.js'></script>" + "\n\r");
sb.Append("<script language='JavaScript' src='Script/web_scriptiens6.js'></script>" + "\n\r");
Response.Write( sb.ToString());
}
/// <summary>
/// GetDateFormat
/// </summary>
private void GetDateFormat()
{
//tempDate from AppSettings
string tempDate = ConfigurationSettings.AppSettings["DateFormat"].ToLower();
if(tempDate == "" || tempDate == null)
tempDate = "mm/dd/yyyy";
//strDateFormat from QueryString
strDateFormat= Request.QueryString["DateFormat"];
string [] arTempDateFormat = null;
if(strDateFormat == null || strDateFormat == "")
strDateFormat= tempDate;
else if(strDateFormat.IndexOf(',') != -1)
{
arTempDateFormat = strDateFormat.Split(',');
int len = arTempDateFormat.Length;
for(int iDateFormat=0; iDateFormat<len; iDateFormat++)
{
strDateFormat = arTempDateFormat[len-1];
}
}
//Display an error message when appSettings "DateFormat" key is invalid.
if (strDateFormat != "mm/dd/yyyy" && strDateFormat != "dd/mm/yyyy" &&
strDateFormat != "mm/dd/yyyy" && strDateFormat != "mm/dd/yy" &&
strDateFormat != "dd/mm/yy" && strDateFormat != "yyyy.ddd")
{
strMsg = "";
strMsg = "Date Format is incorrect:( " + strDateFormat + ")";
strMsg = doErrorMsg(strMsg);
Response.Write(strMsg);
}
}
/// <summary>
/// CheckIE
/// </summary>
/// <PARAM name="strBrowser">string</PARAM>
private bool CheckIE(string strBrowser)
{
strBrowser = Request.UserAgent;
if (strBrowser.IndexOf("MSIE 6.0") > -1 || strBrowser.IndexOf("MSIE 5.0") > -1)
{
// The browser is Microsoft Internet Explorer Version 6.0.
bCheckIE = true;
}
else
{
bCheckIE = false;
}
return bCheckIE;
}
/// <summary>
/// doErrorMsg: Error message box
/// </summary>
/// <PARAM name="strMsg">string</PARAM>
public string doErrorMsg(string strMsg)
{
string strError="";
strMsg = strMsg.Replace("\"", "'");
strError += "<script>" + "\r\n";
strError += "var obj=\"" + strMsg + "\";" + "\r\n";
strError += "alert(obj);" + "\r\n";
strError += "</script>" + "\r\n";
return strError;
}
/// <summary>
/// bnDate_Click
/// </summary>
///<PARAM name="sender">object</PARAM>
///<PARAM name="e">System.EventArgs</PARAM>
private void bnDate_Click(object sender, System.EventArgs e)
{
Response.Write("You Clicked the Header Text \"Date\" ");
}
}//class
}//namespace