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.Data.SqlClient;
using System.Text;
using System.Data.OleDb;
using System.IO;
using System.Xml.Serialization;
using System.Xml;
using System.Threading;
namespace ajaxpilot
{
public class ajaxpilot : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid dgView;
protected System.Web.UI.WebControls.Button Button1;
private int maxrec = 25;
private string apostrophe = @"""";
private ArrayList aFirstname = new ArrayList();
private ArrayList aLastname = new ArrayList();
private ArrayList aPhone = new ArrayList();
private ArrayList aEmail = new ArrayList();
private ArrayList aRowid = new ArrayList();
private int startline = 0;
private decimal maxid = 0;
//response string writer
private System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
private void Page_Load(object sender, System.EventArgs e)
{
if (Request.QueryString["ahideid"] != null) {
bind();
}
}
private void bind()
{
string transid = Request.QueryString["ahideid"];
string actionid = Request.QueryString["ahideactionid"];
string userid = Request.QueryString["ahideuserid"].Trim();
if (userid == "") {
userid = Request.QueryString["userid"].Trim();
userid = userid.Replace(@"?","_");
userid = userid.Replace(@"/","_");
userid = userid.Replace(@"\","_");
userid = userid.Replace(@":","_");
userid = userid.Replace(@"""","_");
userid = userid.Replace(@"*","_");
userid = userid.Replace(@">","_");
userid = userid.Replace(@"<","_");
userid = userid.Replace(@"|","_");
}
string sbasedir = System.AppDomain.CurrentDomain.BaseDirectory;
if (transid == "start") {
if (actionid == "ok") {
if (userid == "") {
res(adiv("message","","","","Invalid userid"));
} else {
if (userid == "Your ID") {
res(adiv("message","","","","Invalid userid"));
} else {
string cmessage = SerializeDataSetInit(userid+@".xml",sbasedir);
cmessage = DeSerializeDataSet(userid+@".xml",sbasedir);
res(adiv("main","divInputclass","divInput"));
res(adiv("","endlineClass","","",@"")); //end and new line
res(adiv("","separateclass2","","",@""));
res(adiv("","divListclass","divList"));
InputDiv("divInput");
res(adiv("divList","divListHeadclass","divListHead"));
res(adiv("","endlineClass","","",@"")); //end and new line
res(adiv("","scrollcontainerclass","scrollcontainer"));
// fill table
ListValues("scrollcontainer","divListHead");
res(avalue("ahideid","input"));
res(avalue("ahideuserid",userid));
res(avalue("rowselectedid",""));
res(avalue("ahideid","modify"));
res(acontent("inform","Number of records: "+aFirstname.Count.ToString()));
res(avisibility("okbutton","hidden"));
res(avalue("ahidecancelactionid","refresh"));
}
}
}
if (actionid == "cancel") {
res(avalue("userid",""));
}
}
string rowselectedid = Request.QueryString["rowselectedid"];
if (transid == "modify") {
if (actionid == "deleteline" & rowselectedid == "") {
res(adiv("message","","","","Please select a line"));
}
if (actionid == "deleteline" & rowselectedid != "") {
string cmessage = DeSerializeDataSet(userid+@".xml",sbasedir);
if (cmessage == "ok") {
bool found = false;
for (int i = 0; i < this.aFirstname.Count; i++) {
if ((decimal)this.aRowid[i] == Convert.ToDecimal(rowselectedid)) {
this.aFirstname.RemoveAt(i);
this.aLastname.RemoveAt(i);
this.aPhone.RemoveAt(i);
this.aEmail.RemoveAt(i);
this.aRowid.RemoveAt(i);
if (this.startline > this.aFirstname.Count-1) {
this.startline = Math.Max(this.aFirstname.Count-1,0);
}
found = true;
break;
}
}
if (found) {
cmessage = SerializeDataSet(userid+@".xml",sbasedir);
cmessage = DeSerializeDataSet(userid+@".xml",sbasedir);
ListValues("scrollcontainer","divListHead");
res(avalue("firstname",""));
res(avalue("lastname",""));
res(avalue("phone",""));
res(avalue("email",""));
res(avalue("rowselectedid",""));
res(acontent("inform","Number of records: "+aFirstname.Count.ToString()));
} else {
cmessage = DeSerializeDataSet(userid+@".xml",sbasedir);
ListValues("scrollcontainer","divListHead");
res(adiv("message","","","","Not found!"));
res(aalert("Not found!"));
}
} else {
res(adiv("message","","","",cmessage));
}
}
if (actionid == "modifyline" & rowselectedid == "") {
res(adiv("message","","","","Please select a line"));
}
if (actionid == "modifyline" & rowselectedid != "") {
string cmessage = DeSerializeDataSet(userid+@".xml",sbasedir);
if (cmessage == "ok") {
bool found = false;
for (int i = 0; i < this.aFirstname.Count; i++)
{
if ((decimal)this.aRowid[i] == Convert.ToDecimal(rowselectedid)) {
this.aFirstname[i] = Request.QueryString["firstname"];
this.aLastname[i] = Request.QueryString["lastname"];
this.aPhone[i] = Request.QueryString["phone"];
this.aEmail[i] = Request.QueryString["email"];
found = true;
break;
}
}
if (found) {
cmessage = SerializeDataSet(userid+@".xml",sbasedir);
if (cmessage == "ok") {
res(adiv("message","","","",cmessage));
}
cmessage = DeSerializeDataSet(userid+@".xml",sbasedir);
if (cmessage == "ok") {
res(adiv("message","","","",cmessage));
}
ListValues("scrollcontainer","divListHead");
res(acontent("inform","Number of records: "+aFirstname.Count.ToString()));
} else {
cmessage = DeSerializeDataSet(userid+@".xml",sbasedir);
if (cmessage == "ok") {
res(adiv("message","","","",cmessage));
}
ListValues("scrollcontainer","divListHead");
res(adiv("message","","","","Not found!"));
res(aalert("Not found!"));
}
} else {
res(adiv("message","","","",cmessage));
}
}
if (actionid == "insertline") {
string cmessage = DeSerializeDataSet(userid+@".xml",sbasedir);
if (cmessage == "ok") {
this.aFirstname.Add(Request.QueryString["firstname"]);
this.aLastname.Add(Request.QueryString["lastname"]);
this.aPhone.Add(Request.QueryString["phone"]);
this.aEmail.Add(Request.QueryString["email"]);
this.maxid = this.maxid+1;
this.aRowid.Add(this.maxid);
res(avalue("rowselectedid",this.maxid.ToString()));
cmessage = SerializeDataSet(userid+@".xml",sbasedir);
cmessage = DeSerializeDataSet(userid+@".xml",sbasedir);
ListValues("scrollcontainer","divListHead");
res(acontent("inform","Number of records: "+aFirstname.Count.ToString()));
} else {
res(adiv("message","","","",cmessage));
}
}
}
Response.Write(oStringWriter.ToString());
oStringWriter.Close();
Response.End();
}
override protected void OnInit(EventArgs e)
{
InitializeComponent();
base.OnInit(e);
}
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
private void res(string responsesubstring)
{
oStringWriter.Write(responsesubstring);
}
private string atargetp(string atarget)
{
if (atarget != "") {
return "";
} else {
return("");
}
}
private string avalue(string atarget,string avaluestring)
{
return atargetp(atarget)+""+acontent+""+atag+">";
return p;
}
//content
private string acontent(string atarget,string innerHtml) {
return atargetp(atarget)+innerHtml;
}
//div
private string adiv(string atarget,string aclass,string aid,string aattributes,string acontent)
{
return generaltag("div",atarget,aclass,aid,aattributes,acontent);
}
private string adiv(string atarget,string aclass,string aid,string aattributes)
{
return adiv(atarget,aclass,aid,aattributes,"");
}
private string adiv(string atarget,string aclass,string aid)
{
return adiv(atarget,aclass,aid,"","");
}
private string adiv(string atarget,string aclass)
{
return adiv(atarget,aclass,"","","");
}
private string adiv(string atarget)
{
return adiv(atarget,"","","","");
}
//span
private string aspan(string atarget,string aclass,string aid,string aattributes,string acontent)
{
return generaltag("span",atarget,aclass,aid,aattributes,acontent);
}
private string aspan(string atarget,string aclass,string aid,string aattributes)
{
return aspan(atarget,aclass,aid,aattributes,"");
}
private string aspan(string atarget,string aclass,string aid)
{
return aspan(atarget,aclass,aid,"","");
}
private string aspan(string atarget,string aclass)
{
return aspan(atarget,aclass,"","","");
}
private string aspan(string atarget)
{
return aspan(atarget,"","","","");
}
//text in span
private string atextspan(string atarget,string aclass,string texttext,string aid,string aattributes)
{
return aspan(atarget,aclass,aid,aattributes,texttext);
}
private string atextspan(string atarget,string aclass,string texttext,string aid)
{
return atextspan(atarget,aclass,texttext,aid,"");
}
private string atextspan(string atarget,string aclass,string texttext)
{
return atextspan(atarget,aclass,texttext,"","");
}
// text in div
private string atext(string atarget,string aclass,string texttext,string aid,string aattributes)
{
return adiv(atarget,"textcontainerclass","","",adiv("",aclass,aid,aattributes,texttext));
}
private string atext(string atarget,string aclass,string texttext,string aid)
{
return atext(atarget,aclass,texttext,aid,"");
}
private string atext(string atarget,string aclass,string texttext)
{
return atext(atarget,aclass,texttext,"","");
}
private string generaltaginput(string atype,string atarget,string aclassinput,string aidinput,string avalue,string aclassdiv,string aiddiv ,string aattributesinput,string aattributesdiv)
{
string sp = "";
return adiv(atarget,aclassdiv,aiddiv,aattributesdiv,sp);
}
//inputtext
private string ainputtext(string atarget,string aclassinput,string aidinput,string avalue,string aclassdiv,string aiddiv ,string aattributesinput,string aattributesdiv)
{
return generaltaginput("text",atarget,aclassinput,aidinput,avalue,aclassdiv,aiddiv,aattributesinput,aattributesdiv);
}
private string ainputtext(string atarget,string aclassinput,string aidinput,string avalue,string aclassdiv,string aiddiv ,string aattributesinput)
{
return ainputtext(atarget,aclassinput,aidinput,avalue,aclassdiv,aiddiv,aattributesinput,"");
}
private string ainputtext(string atarget,string aclassinput,string aidinput,string avalue,string aclassdiv,string aiddiv)
{
return ainputtext(atarget,aclassinput,aidinput,avalue,aclassdiv,aiddiv,"","");
}
private string ainputtext(string atarget,string aclassinput,string aidinput,string avalue,string aclassdiv)
{
return ainputtext(atarget,aclassinput,aidinput,avalue,aclassdiv,"","","");
}
private string ainputtext(string atarget,string aclassinput,string aidinput,string avalue)
{
return ainputtext(atarget,aclassinput,aidinput,avalue,"","","","");
}
//hidden
private string ainputhidden(string atarget,string aclassinput,string aidinput,string avalue,string aclassdiv,string aiddiv ,string aattributesinput,string aattributesdiv)
{
return generaltaginput("hidden",atarget,aclassinput,aidinput,avalue,aclassdiv,aiddiv,aattributesinput,aattributesdiv);
}
private string ainputhidden(string atarget,string aclassinput,string aidinput,string avalue,string aclassdiv,string aiddiv ,string aattributesinput)
{
return ainputhidden(atarget,aclassinput,aidinput,avalue,aclassdiv,aiddiv,aattributesinput,"");
}
private string ainputhidden(string atarget,string aclassinput,string aidinput,string avalue,string aclassdiv,string aiddiv)
{
return ainputhidden(atarget,aclassinput,aidinput,avalue,aclassdiv,aiddiv,"","");
}
private string ainputhidden(string atarget,string aclassinput,string aidinput,string avalue,string aclassdiv)
{
return ainputhidden(atarget,aclassinput,aidinput,avalue,aclassdiv,"","","");
}
private string ainputhidden(string atarget,string aclassinput,string aidinput,string avalue)
{
return ainputhidden(atarget,aclassinput,aidinput,avalue,"","","","");
}
//button
private string abutton(string atarget,string aclassinput,string aidinput,string avalue,string aclassdiv,string aiddiv ,string aattributesinput,string aattributesdiv)
{
return generaltaginput("button",atarget,aclassinput,aidinput,avalue,aclassdiv,aiddiv,aattributesinput,aattributesdiv);
}
private string abutton(string atarget,string aclassinput,string aidinput,string avalue,string aclassdiv,string aiddiv ,string aattributesinput)
{
return abutton(atarget,aclassinput,aidinput,avalue,aclassdiv,aiddiv,aattributesinput,"");
}
private string abutton(string atarget,string aclassinput,string aidinput,string avalue,string aclassdiv,string aiddiv)
{
return abutton(atarget,aclassinput,aidinput,avalue,aclassdiv,aiddiv,"","");
}
private string abutton(string atarget,string aclassinput,string aidinput,string avalue,string aclassdiv)
{
return abutton(atarget,aclassinput,aidinput,avalue,aclassdiv,"","","");
}
private string abutton(string atarget,string aclassinput,string aidinput,string avalue)
{
return abutton(atarget,aclassinput,aidinput,avalue,"","","","");
}
private string SerializeDataSetInit(string filename,string sbasedirectory)
{
if (File.Exists(sbasedirectory+@"..\Data\Ajaxdemo."+filename)) {
return ("ok");
}
try {
XmlSerializer ser = new XmlSerializer(typeof(DataSet));
DataSet ds = new DataSet("myDataSet");
DataTable t = new DataTable("table1");
DataColumn c = new DataColumn("firstname",System.Type.GetType("System.String"));
DataColumn c2 = new DataColumn("lastname",System.Type.GetType("System.String"));
DataColumn c3 = new DataColumn("phone",System.Type.GetType("System.String"));
DataColumn c4 = new DataColumn("email",System.Type.GetType("System.String"));
DataColumn id = new DataColumn("rowid",System.Type.GetType("System.Decimal"));
t.Columns.Add(c);
t.Columns.Add(c2);
t.Columns.Add(c3);
t.Columns.Add(c4);
t.Columns.Add(id);
ds.Tables.Add(t);
DataRow r;
for(int i = 0; i < 20 ;i++){
r = t.NewRow();
r["firstname"] = "First name"+i.ToString();
r["lastname"] = "Last name"+i.ToString();
r["phone"] = "Phone"+i.ToString();
r["email"] = "Email"+i.ToString();
r["rowid"] = i;
t.Rows.Add(r);
}
TextWriter writer = new StreamWriter(sbasedirectory+@"..\Data\Ajaxdemo."+filename);
ser.Serialize(writer, ds);
writer.Close();
return ("ok");
} catch (Exception e) {
//return e.Message;
return("Error");
}
}
private string SerializeDataSet(string filename,string sbasedirectory)
{
if (maxrec < aFirstname.Count) {
res(adiv("message","","","","Please use only "+maxrec.ToString()+" records!"));
res(aalert("Please use only "+maxrec.ToString()+" records!"));
return ("ok");
}
try {
XmlSerializer ser = new XmlSerializer(typeof(DataSet));
DataSet ds = new DataSet("myDataSet");
DataTable t = new DataTable("table1");
DataColumn c = new DataColumn("firstname",System.Type.GetType("System.String"));
DataColumn c2 = new DataColumn("lastname",System.Type.GetType("System.String"));
DataColumn c3 = new DataColumn("phone",System.Type.GetType("System.String"));
DataColumn c4 = new DataColumn("email",System.Type.GetType("System.String"));
DataColumn id = new DataColumn("rowid",System.Type.GetType("System.Decimal"));
t.Columns.Add(c);
t.Columns.Add(c2);
t.Columns.Add(c3);
t.Columns.Add(c4);
t.Columns.Add(id);
ds.Tables.Add(t);
DataRow r;
for(int i = 0; i < aFirstname.Count ;i++) {
if ( (string) aFirstname[i] != "" | (string) aLastname[i] != "") {
r = t.NewRow();
r["firstname"] = aFirstname[i];
r["lastname"] = aLastname[i];
r["phone"] = aPhone[i];
r["email"] = aEmail[i];
r["rowid"] = aRowid[i];
t.Rows.Add(r);
}
}
TextWriter writer = new StreamWriter(sbasedirectory+@"..\Data\Ajaxdemo."+filename);
ser.Serialize(writer, ds);
writer.Close();
return ("ok");
} catch (Exception e) {
//return e.Message;
return("Error");
}
}
private string DeSerializeDataSet(string filename,string sbasedirectory)
{
try {
aFirstname.Clear();
aLastname.Clear();
aPhone.Clear();
aEmail.Clear();
aRowid.Clear();
XmlSerializer ser = new XmlSerializer(typeof(DataSet));
FileStream fs = new FileStream(sbasedirectory+@"..\Data\Ajaxdemo."+filename, FileMode.Open);
XmlReader xmlreader = new XmlTextReader(fs);
DataSet ds = (DataSet) ser.Deserialize(xmlreader);
DataView view = new DataView(ds.Tables[0]);
view.Sort = "lastname ASC, firstname ASC";
DataRow r;
foreach (DataRowView myDRV in view) {
r = myDRV.Row;
aFirstname.Add(r["firstname"]);
aLastname.Add(r["lastname"]);
aPhone.Add(r["phone"]);
aEmail.Add(r["email"]);
aRowid.Add(r["rowid"]);
maxid = Math.Max(maxid,(decimal) r["rowid"]);
}
xmlreader.Close();
return ("ok");
} catch (Exception e) {
//return e.Message;
return("Error");
}
}
private void InputDiv(string targetDiv)
{
res(adiv(targetDiv,"divInputLineclass","divInputLine"));
res(adiv("divInputLine","divInputLineclass","divFirstNameLine"));
res(adiv("","divInputLineclass","divLastNameLine"));
res(adiv("","divInputLineclass","divPhoneLine"));
res(adiv("","divInputLineclass","divEmailLine"));
res(adiv("divFirstNameLine","divInputGroupLineclass","divFirstName"));
res(adiv("","endlineClass","","",@""));
res(adiv("divLastNameLine","divInputGroupLineclass","divLastName"));
res(adiv("","endlineClass","","",@""));
res(adiv("divPhoneLine","divInputGroupLineclass","divPhone"));
res(adiv("","endlineClass","","",@""));
res(adiv("divEmailLine","divInputGroupLineclass","divEmail"));
res(adiv("","endlineClass","","",@""));
res(ainputhidden("","","rowidinput",""));
res(ainputhidden("","","rowselectedid",""));
res(adiv("","endlineClass","","",@"")); //end and new line
res(atext("divFirstName","inputtextclass","First name:",""));
res(ainputtext("","firstnameclass","firstname","","inputclass"));
res(atext("divLastName","inputtextclass","Last name:"));
res(ainputtext("","lastnameclass","lastname","","inputclass"));
res(atext("divPhone","inputtextclass","Phone:"));
res(ainputtext("","phoneclass","phone","","inputclass"));
res(atext("divEmail","inputtextclass","Email:"));
res(ainputtext("","emailclass","email","","inputclass"));
string javastringmodify = @"onclick=""javascript:show_data('modifyline')""";
string javastringinsert = @"onclick=""javascript:show_data('insertline')""";
string javastringdelete = @"onclick=""javascript:show_data('deleteline')""";
res(abutton("","buttonselectclass","ww__insertline","Insert","buttonselectdivclass","insertdiv",javastringinsert,""));
res(abutton("","buttonselectclass","ww__modifyline","Modify","buttonselectdivclass","modifydiv",javastringmodify,""));
res(abutton("","buttonselectclass","ww__delete","Delete","buttonselectdivclass","deletediv",javastringdelete,""));
}
private void ListValues(string targetDiv,string targetHeadDiv ) {
string a = "";
string b = "";
string onclickjavastring = "";
if (this.aFirstname.Count>0) {
for (int i = 0; i < this.aFirstname.Count; i++) {
a = @"document.getElementById('rowselectedid').value";
b = @"'"+((decimal)aRowid[i]).ToString()+@"'";
onclickjavastring = @"onclick=""javascript:"+ a +" = " + b +@";"+
@"document.getElementById('firstname').value = "+@"'"+(string) aFirstname[i]+@"';"+
@"document.getElementById('lastname').value = "+@"'"+(string) aLastname[i]+@"';"+
@"document.getElementById('phone').value = "+@"'"+(string) aPhone[i]+@"';"+
@"document.getElementById('email').value = "+@"'"+(string) aEmail[i]+@"';"+
@""" ";
if (i == 0) {
res(acontent(targetHeadDiv,@"
"));
res(acontent("",@""));
res(acontent("",@"| "+"First name"+@" | "));
res(acontent("",@""+"Last name"+@" | "));
res(acontent("",@""+"Phone"+@" | "));
res(acontent("",@""+"Email"+@" | "));
res(acontent("",@"
"));
res(acontent(targetDiv,@""));
res(acontent("",@"| "+(string) aFirstname[i]+@" | "));
} else {
res(acontent("",@"
| "+(string) aFirstname[i]+@" | "));
}
res(acontent("",@""+(string) aLastname[i]+@" | "));
res(acontent("",@""+(string) aPhone[i]+@" | "));
res(acontent("",@""+(string) aEmail[i]+@" | "));
res(acontent("",@"
"));
}
res(acontent("",@"
"));
} else {
res(acontent(targetDiv,@" All records deleted."));
}
}
}
}