Example #1
0
		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
			}
		}
Example #2
0
		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;
			}
		}