You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@struts.apache.org by hu...@apache.org on 2005/10/14 18:18:54 UTC

svn commit: r321143 - in /struts/sandbox/trunk/overdrive/Nexus: Test/bin/Debug/ Web/

Author: husted
Date: Fri Oct 14 09:18:40 2005
New Revision: 321143

URL: http://svn.apache.org/viewcvs?rev=321143&view=rev
Log:
OVR-11
* Add support for CustomPaging., 
* Clients must set AllowCustomPaging to true during InitGrid. 
* Grid will maintain item_limit and item_count attributes in the criteria. 
* Client command can use these attributes to adjust queires. 
* Clients must also provide an item_count attribute indicating how many entries are in the result set being page. 
* Pther attributes, like page size, are taken from the standard DataGrid.

Removed:
    struts/sandbox/trunk/overdrive/Nexus/Web/NexusDataGrid.cs
Modified:
    struts/sandbox/trunk/overdrive/Nexus/Test/bin/Debug/Nexus.Core.dll
    struts/sandbox/trunk/overdrive/Nexus/Test/bin/Debug/Nexus.Core.pdb
    struts/sandbox/trunk/overdrive/Nexus/Test/bin/Debug/Nexus.Extras.dll
    struts/sandbox/trunk/overdrive/Nexus/Test/bin/Debug/Nexus.Extras.pdb
    struts/sandbox/trunk/overdrive/Nexus/Test/bin/Debug/Nexus.Test.dll
    struts/sandbox/trunk/overdrive/Nexus/Test/bin/Debug/Nexus.Test.pdb
    struts/sandbox/trunk/overdrive/Nexus/Web/GridControl.ascx.cs
    struts/sandbox/trunk/overdrive/Nexus/Web/Web.csproj

Modified: struts/sandbox/trunk/overdrive/Nexus/Test/bin/Debug/Nexus.Core.dll
URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Test/bin/Debug/Nexus.Core.dll?rev=321143&r1=321142&r2=321143&view=diff
==============================================================================
Binary files - no diff available.

Modified: struts/sandbox/trunk/overdrive/Nexus/Test/bin/Debug/Nexus.Core.pdb
URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Test/bin/Debug/Nexus.Core.pdb?rev=321143&r1=321142&r2=321143&view=diff
==============================================================================
Binary files - no diff available.

Modified: struts/sandbox/trunk/overdrive/Nexus/Test/bin/Debug/Nexus.Extras.dll
URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Test/bin/Debug/Nexus.Extras.dll?rev=321143&r1=321142&r2=321143&view=diff
==============================================================================
Binary files - no diff available.

Modified: struts/sandbox/trunk/overdrive/Nexus/Test/bin/Debug/Nexus.Extras.pdb
URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Test/bin/Debug/Nexus.Extras.pdb?rev=321143&r1=321142&r2=321143&view=diff
==============================================================================
Binary files - no diff available.

Modified: struts/sandbox/trunk/overdrive/Nexus/Test/bin/Debug/Nexus.Test.dll
URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Test/bin/Debug/Nexus.Test.dll?rev=321143&r1=321142&r2=321143&view=diff
==============================================================================
Binary files - no diff available.

Modified: struts/sandbox/trunk/overdrive/Nexus/Test/bin/Debug/Nexus.Test.pdb
URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Test/bin/Debug/Nexus.Test.pdb?rev=321143&r1=321142&r2=321143&view=diff
==============================================================================
Binary files - no diff available.

Modified: struts/sandbox/trunk/overdrive/Nexus/Web/GridControl.ascx.cs
URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Web/GridControl.ascx.cs?rev=321143&r1=321142&r2=321143&view=diff
==============================================================================
--- struts/sandbox/trunk/overdrive/Nexus/Web/GridControl.ascx.cs (original)
+++ struts/sandbox/trunk/overdrive/Nexus/Web/GridControl.ascx.cs Fri Oct 14 09:18:40 2005
@@ -18,6 +18,49 @@
 		private string LIST_CRITERIA_KEY = "list_Criteria";
 
 		/// <summary>
+		/// Set the given criteria to the list_Critieria (creating a new one if null), and, 
+		/// If AllowCustomPage is set, 
+		/// calcuate new Limit and Offset, based on pageIndex, and set to criteria; 
+		/// obtain Count from criteria (or set to 0).
+		/// </summary>
+		/// <remarks><p>
+		/// This form is provided to be called by list_Criteria_Init. 
+		/// The other form is provided to be called by other methods.
+		/// </p></remarks>
+		/// <param name="criteria">The criteria instance to store the attributes</param>
+		/// <param name="pageIndex">The new page index</param>
+		protected IDictionary list_Criteria_NewPageIndex(IDictionary criteria, int pageIndex)
+		{
+			if (Grid.AllowCustomPaging)
+			{
+				if (criteria==null) criteria = new Hashtable(); // FIXME: Spring?
+				int page = pageIndex;
+				int limit = Grid.PageSize;
+				int offset = page * limit;
+				criteria[ITEM_LIMIT] = limit;
+				criteria[ITEM_OFFSET] = offset;
+			}
+			list_Criteria = criteria;
+			return criteria;
+		}
+	
+		/// <summary>
+		/// If AllowCustomPage is set, 
+		/// calculate new List and Offset, using the list_Context.
+		/// </summary>
+		/// <remarks><p>
+		/// The other form is provided to be called by list_Criteria_Init. 
+		/// This form is provided to be called by other methods.
+		/// </p></remarks>
+		/// <param name="pageIndex">The new page index</param>
+		/// <returns>The updated list_Criteria instance</returns>
+		protected IDictionary list_Criteria_NewPageIndex(int pageIndex)
+		{
+			IDictionary criteria = list_Criteria;
+			return list_Criteria_NewPageIndex(criteria,pageIndex);
+		}
+
+		/// <summary>
 		/// Values to use with a query statement.
 		/// </summary>
 		protected IDictionary list_Criteria
@@ -216,6 +259,14 @@
 			set { _HasEditColumn = value; }
 		}
 
+		private bool _AllowCustomPaging = false;
+
+		public virtual bool AllowCustomPaging
+		{
+			get { return _AllowCustomPaging; }
+			set { _AllowCustomPaging = value; }
+		}
+
 		#endregion		
 
 		#region Binding methods 
@@ -223,7 +274,8 @@
 		protected virtual void DataSource(IViewHelper helper)
 		{
 			IList list = helper.Outcome as IList;
-			Grid.DataSource = list;
+			DataGrid grid = Grid;
+			grid.DataSource = list;
 		}
 
 		public override void DataBind()
@@ -301,8 +353,13 @@
 				int i = 0;
 				if (HasEditColumn) i = BindEditColumn(i);
 				if (HasItemColumn) i = BindItemColumn(i);
+				if (AllowCustomPaging)
+				{
+					Grid.AllowCustomPaging = true;
+					int itemCount = Convert.ToInt32(helper.Criteria[ITEM_COUNT]);
+					Grid.VirtualItemCount = itemCount;
+				}
 				BindColumns(i);
-
 			}
 			DataSource(helper);
 			DataBind();
@@ -437,6 +494,13 @@
 		public virtual IViewHelper LoadGrid(IDictionary criteria)
 		{
 			IViewHelper helper;
+
+			if ((Grid.AllowCustomPaging) && (criteria==null))
+			{
+				list_Criteria_NewPageIndex(criteria,0);
+				HasCriteria = true;
+			}
+
 			if (HasCriteria)
 				helper = ExecuteList(criteria);
 			else
@@ -474,7 +538,7 @@
 		public virtual bool Open(IDictionary criteria)
 		{
 			Page_Reset();
-			list_Criteria = criteria;
+			list_Criteria_NewPageIndex(criteria,0);
 			return Open();
 		}
 
@@ -585,18 +649,6 @@
 			return controls;
 		}
 
-		private bool GetList()
-		{
-			IViewHelper helper = Execute(ListCommand);
-			bool okay = helper.IsNominal;
-			if (okay)
-			{
-				DataSource(helper);
-				DataBind();
-			}
-			return okay;
-		}
-
 		// postback events
 
 		private void list_Edit(object source, DataGridCommandEventArgs e)
@@ -612,11 +664,10 @@
 			bool okay = helper.IsNominal;
 			if (okay)
 			{
-				okay = GetList();
-				// ISSUE: Event? Page_Prompt = (List_Insert) ? msg_ADD_SUCCESS : msg_SAVE_SUCCESS;
 				list_Insert = false;
 				list_ItemIndex = -1;
-				list_Refresh();
+				okay = this.Open();
+				// ISSUE: Event? Page_Prompt = (List_Insert) ? msg_ADD_SUCCESS : msg_SAVE_SUCCESS;
 			}
 			if (!okay) Page_Error = helper;
 		}
@@ -638,10 +689,26 @@
 			list_Item(e.CommandName, index);
 		}
 
+		public const string ITEM_LIMIT = "item_limit";
+		public const string ITEM_OFFSET = "item_offset";
+		public const string ITEM_COUNT = "item_count";
+
 		private void list_PageIndexChanged(object sender, DataGridPageChangedEventArgs e)
 		{
-			Grid.CurrentPageIndex = e.NewPageIndex;
-			list_Refresh();
+			DataGrid grid = Grid;
+			
+			if (grid.AllowCustomPaging)
+			{
+				IDictionary criteria = list_Criteria_NewPageIndex(e.NewPageIndex);
+				IViewHelper helper = GetHelperFor(ListCommand);
+				helper.Read(criteria,true);
+				helper.Execute();
+				DataSource(helper);
+			}
+
+			grid.CurrentPageIndex = e.NewPageIndex;
+			list_Refresh();				
+			
 		}
 
 		#endregion

Modified: struts/sandbox/trunk/overdrive/Nexus/Web/Web.csproj
URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Web/Web.csproj?rev=321143&r1=321142&r2=321143&view=diff
==============================================================================
--- struts/sandbox/trunk/overdrive/Nexus/Web/Web.csproj (original)
+++ struts/sandbox/trunk/overdrive/Nexus/Web/Web.csproj Fri Oct 14 09:18:40 2005
@@ -175,11 +175,6 @@
                     BuildAction = "EmbeddedResource"
                 />
                 <File
-                    RelPath = "NexusDataGrid.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
                     RelPath = "ViewControl.ascx"
                     BuildAction = "Content"
                 />



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@struts.apache.org
For additional commands, e-mail: dev-help@struts.apache.org