private void Page_Load(object sender, System.EventArgs e) { int expiresTime = 9999; try { #region images if(HttpContext.Current.Request.QueryString.GetValues(0)[0]=="DownArrow") { #region respond with arrow image Response.ContentType="image/gif"; Response.Expires=expiresTime; Response.Clear(); Assembly assembly = Assembly.GetExecutingAssembly(); System.IO.Stream imageStream = assembly.GetManifestResourceStream("Cambro.Web.DbCombo.arrow.gif"); byte[] b=new byte[54]; imageStream.Read(b,0,54); Response.BinaryWrite(b); return; #endregion } if(HttpContext.Current.Request.QueryString.GetValues(0)[0]=="UpArrow") { #region respond with arrow image Response.ContentType="image/gif"; Response.Expires=expiresTime; Response.Clear(); Assembly assembly = Assembly.GetExecutingAssembly(); System.IO.Stream imageStream = assembly.GetManifestResourceStream("Cambro.Web.DbCombo.arrowUp.gif"); byte[] b=new byte[54]; imageStream.Read(b,0,54); Response.BinaryWrite(b); return; #endregion } if(HttpContext.Current.Request.QueryString.GetValues(0)[0]=="d") { #region respond with DbCombo button image Response.ContentType="image/gif"; Response.Expires=expiresTime; Response.Clear(); Assembly assembly = Assembly.GetExecutingAssembly(); System.IO.Stream imageStream = assembly.GetManifestResourceStream("Cambro.Web.DbCombo.DbComboButton3.gif"); byte[] b=new byte[849]; imageStream.Read(b,0,849); Response.BinaryWrite(b); return; #endregion } if(HttpContext.Current.Request.QueryString.GetValues(0)[0]=="e") { #region respond with DbCombo button image Response.ContentType="image/gif"; Response.Expires=expiresTime; Response.Clear(); Assembly assembly = Assembly.GetExecutingAssembly(); System.IO.Stream imageStream = assembly.GetManifestResourceStream("Cambro.Web.DbCombo.DbComboButton4.gif"); byte[] b=new byte[838]; imageStream.Read(b,0,838); Response.BinaryWrite(b); return; #endregion } if(HttpContext.Current.Request.QueryString.GetValues(0)[0]=="f") { #region respond with DbCombo button image Response.ContentType="image/gif"; Response.Expires=expiresTime; Response.Clear(); Assembly assembly = Assembly.GetExecutingAssembly(); System.IO.Stream imageStream = assembly.GetManifestResourceStream("Cambro.Web.DbCombo.DbComboButton5-eeeeee-big-c.gif"); byte[] b=new byte[864]; imageStream.Read(b,0,864); Response.BinaryWrite(b); return; #endregion } #endregion } catch{} #region Get Xml from request bool requestXml=false; string debugStr="false"; XmlDocument xmlResp = new XmlDocument(); try { xmlResp.Load(Request.InputStream); requestXml=true; } catch { requestXml=false; } #endregion if (!requestXml) { #region validate query string hash bits (removed) /* string timeStringPlusRnd = HttpContext.Current.Request.QueryString["a"]+" fdksjhaklhdsawmewqnm43bn3248kjhfgfdskgjhrewtmrenwrewtyoicxvbyiovcxuby4wswpwcdpevom"; SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider(); byte[] hash = sha1.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(timeStringPlusRnd)); string hashFromClientComputed = System.Text.ASCIIEncoding.ASCII.GetString(hash); if (hashFromClientComputed != HttpContext.Current.Request.QueryString["b"]) { throw (new Exception("QueryString corrupt, er=1")); } DateTime dateFromClient = System.DateTime.Parse(HttpContext.Current.Request.QueryString["a"]); if (dateFromClient.AddSeconds(6.0)<DateTime.Now || dateFromClient>DateTime.Now) { //Response.Write("history.go(0);function DbComboStringToEval(a,b,c,d,e){return(\"\")}function DbComboInit(a){return true;}"); //Response.End(); throw (new Exception("QueryString corrupt, er=2")); } */ #endregion #region respond with javascript include Response.ContentType="text/html"; Response.Expires=expiresTime; Response.Clear(); Assembly assembly = Assembly.GetExecutingAssembly(); // #if DEBUG System.IO.StreamReader textStream = new System.IO.StreamReader(assembly.GetManifestResourceStream("Cambro.Web.DbCombo.DbCombo.js")); // #else // System.IO.StreamReader textStream = new System.IO.StreamReader(assembly.GetManifestResourceStream("Cambro.Web.DbCombo.DbComboEncoded.js")); // #endif string text = textStream.ReadToEnd(); Response.Write(text); #endregion } else { #region respons with results try { #region respond with results #region get data out of xml debugStr = xmlResp.DocumentElement.GetElementsByTagName("debug")[0].InnerText; int rows=Int32.Parse(xmlResp.DocumentElement.GetElementsByTagName("rows")[0].InnerText); string query=xmlResp.DocumentElement.GetElementsByTagName("query")[0].InnerText; int skip=Int32.Parse(xmlResp.DocumentElement.GetElementsByTagName("skip")[0].InnerText); string serverAssembly=xmlResp.DocumentElement.GetElementsByTagName("serverAssembly")[0].InnerText; string serverType =xmlResp.DocumentElement.GetElementsByTagName("serverType")[0].InnerText; string serverMethod =xmlResp.DocumentElement.GetElementsByTagName("serverMethod")[0].InnerText; string dataMember =xmlResp.DocumentElement.GetElementsByTagName("dataMember")[0].InnerText; string dataValueField =xmlResp.DocumentElement.GetElementsByTagName("dataValueField")[0].InnerText; string dataTextField =xmlResp.DocumentElement.GetElementsByTagName("dataTextField")[0].InnerText; string parentAssembly =xmlResp.DocumentElement.GetElementsByTagName("parentAssembly")[0].InnerText; string parentType =xmlResp.DocumentElement.GetElementsByTagName("parentType")[0].InnerText; string parentBaseAssembly =xmlResp.DocumentElement.GetElementsByTagName("parentBaseAssembly")[0].InnerText; string parentBaseType =xmlResp.DocumentElement.GetElementsByTagName("parentBaseType")[0].InnerText; string pageAssembly =xmlResp.DocumentElement.GetElementsByTagName("pageAssembly")[0].InnerText; string pageType =xmlResp.DocumentElement.GetElementsByTagName("pageType")[0].InnerText; string pageBaseAssembly =xmlResp.DocumentElement.GetElementsByTagName("pageBaseAssembly")[0].InnerText; string pageBaseType =xmlResp.DocumentElement.GetElementsByTagName("pageBaseType")[0].InnerText; Hashtable serverState =new Hashtable(); string serverStateString =""; string serverStateHash =""; if (xmlResp.DocumentElement.GetElementsByTagName("serverState")[0].InnerText.Length>0) { serverState =(Hashtable)de(xmlResp.DocumentElement.GetElementsByTagName("serverState")[0].InnerText); serverStateString =xmlResp.DocumentElement.GetElementsByTagName("serverState")[0].InnerText; serverStateHash =xmlResp.DocumentElement.GetElementsByTagName("serverStateHash")[0].InnerText; } XmlNode clientState = xmlResp.DocumentElement.GetElementsByTagName("clientState")[0]; Hashtable stateHashtable = new Hashtable(); if (clientState.ChildNodes.Count>0) { for(int i=0;i<clientState.ChildNodes.Count;i++) { XmlNode stateItem = clientState.ChildNodes[i]; string key = stateItem.ChildNodes[0].InnerText; string data = stateItem.ChildNodes[1].InnerText; stateHashtable[key]=data; } } if (stateHashtable.Count==0) stateHashtable=null; #endregion #region Prepare the response Response.ContentType="text/xml"; Response.Expires=-1; Response.Clear(); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.AppendChild(xmlDoc.CreateElement("response")); XmlNode responseTag=xmlDoc.GetElementsByTagName("response")[0]; #endregion DbCombo.StoreResult resDel; bool moreRowsAvailable; #region Get our results resDel = new DbCombo.StoreResult(StoreResultXmlDoc); moreRowsAvailable = DbCombo.StoreResults( rows, query, skip, serverAssembly, serverType, serverMethod, dataMember, dataValueField, dataTextField, parentAssembly, parentType, parentBaseAssembly, parentBaseType, pageAssembly, pageType, pageBaseAssembly, pageBaseType, resDel, xmlDoc, responseTag, stateHashtable, serverState, serverStateString, serverStateHash, true ); #endregion #region Store the results in a the xml responseTag.PrependChild(createXmlNode(xmlDoc,"exception","")); if (moreRowsAvailable) { responseTag.PrependChild(createXmlNode(xmlDoc,"results","-1")); } else { responseTag.PrependChild(createXmlNode(xmlDoc,"results","0")); } #endregion Response.Write(xmlDoc.InnerXml); #endregion } catch (Exception exception) { #region Handle any exceptions if (debugStr=="-1") throw exception; else { Response.Expires=-1; Response.ContentType="text/xml"; Response.Clear(); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.AppendChild(xmlDoc.CreateElement("response")); XmlNode responseTag=xmlDoc.GetElementsByTagName("response")[0]; responseTag.PrependChild(createXmlNode(xmlDoc,"exception",exception.ToString())); Response.Write(xmlDoc.InnerXml); } #endregion } #endregion } }
internal void dlbSearch(int dlbRows) { dlbListBox.Items.Clear(); Hashtable stateHash; if (GetDownLevelState==null) { stateHash=null; } else { stateHash=GetDownLevelState(this); } DbCombo.StoreResult resDel = new DbCombo.StoreResult(dlbStoreResult); bool moreRowsAvailable = StoreResults( dlbRows, Text, 0, ServerAssembly, ServerType, ServerMethod, DataMember, DataValueField, DataTextField, this.Parent.GetType().Assembly.GetName().Name, this.Parent.GetType().ToString(), this.Parent.GetType().BaseType.Assembly.GetName().Name, this.Parent.GetType().BaseType.ToString(), this.Page.GetType().Assembly.GetName().Name, this.Page.GetType().ToString(), this.Page.GetType().BaseType.Assembly.GetName().Name, this.Page.GetType().BaseType.ToString(), resDel, null, null, stateHash, ServerState, "", "", false ); if (dlbListBox.Items.Count>=DropDownRows) { dlbListBox.Rows=DropDownRows; dlbResultsHolder.Visible=true; dlbNoResultsLabel.Visible=false; dlbSelectButton.Visible=true; } else { if (dlbListBox.Items.Count==0) { dlbListBox.Rows=2; dlbResultsHolder.Visible=false; dlbSelectButton.Visible=false; dlbNoResultsLabel.Visible=true; } else if (dlbListBox.Items.Count==1) { dlbListBox.Rows=2; dlbResultsHolder.Visible=true; dlbNoResultsLabel.Visible=false; dlbSelectButton.Visible=true; } else { dlbListBox.Rows=dlbListBox.Items.Count; dlbResultsHolder.Visible=true; dlbNoResultsLabel.Visible=false; dlbSelectButton.Visible=true; } } if (moreRowsAvailable) { dlbMoreResultsButton.Visible=true; } else { dlbMoreResultsButton.Visible=false; } }