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+""; 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("",@"")); res(acontent("",@"")); res(acontent("",@"")); res(acontent("",@"")); res(acontent("",@"
"+"First name"+@""+"Last name"+@""+"Phone"+@""+"Email"+@"
")); res(acontent(targetDiv,@"")); res(acontent("",@"")); } else { res(acontent("",@"")); } res(acontent("",@"")); res(acontent("",@"")); res(acontent("",@"")); res(acontent("",@"")); } res(acontent("",@"
"+(string) aFirstname[i]+@"
"+(string) aFirstname[i]+@""+(string) aLastname[i]+@""+(string) aPhone[i]+@""+(string) aEmail[i]+@"
")); } else { res(acontent(targetDiv,@" All records deleted.")); } } } }