⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 catalog.cs

📁 C#.net web developer s guide, c#网站开发者指南
💻 CS
字号:
using System;
using System.Data;


namespace simpleCart.components
{
	/// <summary>
	/// bookCatalog acts as cached datasource. Enables retreival of data in data ranges
	/// </summary>	
	public class bookCatalog
	{
		private DataSet dsAllBooks;
			
		/// <summary>
		/// Initalizes bookCatalog by reading in a dataset
		/// </summary>
		/// <param name="ds">DataSet</param>
		public void initCatalog(DataSet ds )
		{
			dsAllBooks = ds;
			int recordCount = dsAllBooks.Tables[0].Rows.Count;
			try
			{
				dsAllBooks.Tables.Add( createSummaryTable(0, recordCount-1, recordCount) );
			}
			catch(Exception e)
			{
				string temp = e.ToString();
				//this fails when attempting to add the table twice
			}
		}

		/// <summary>
		/// Creates a table that is added to the DataSet. This table contains some metadata 
		/// about the dataset returned.
		/// </summary>
		/// <param name="startPos">int</param>
		/// <param name="range">int</param>
		/// <param name="RecordCount">int</param>
		/// <returns>DataTable</returns>
		public DataTable createSummaryTable(int startPos, int range, int RecordCount)
		{
			DataTable dtSummary = new DataTable("Summary");
			DataRow drSummary;
			dtSummary.Columns.Add(new DataColumn("RecordCount", typeof(int)));
			dtSummary.Columns.Add(new DataColumn("FirstItemIndex", typeof(int)));
			dtSummary.Columns.Add(new DataColumn("LastItemIndex", typeof(int)));

			drSummary = dtSummary.NewRow();
			drSummary["RecordCount"]    = RecordCount;
			drSummary["FirstItemIndex"] = startPos;
			drSummary["LastItemIndex"]  = startPos + range;
			dtSummary.Rows.Add( drSummary );

			return dtSummary;
		}

		/// <summary>
		/// This Method returns the input DataSet
		/// </summary>
		/// <returns>DataSet</returns>
		public DataSet catalog()
		{
			return dsAllBooks;
		}

		/// <summary>
		/// Specialized interface to catalogRangeByCategory.
		/// This Method returns all the data for only the given book
		/// </summary>
		/// <param name="book_isbn">string</param>
		/// <returns>DataSet</returns>
		public DataSet catalogItemDetails( string book_isbn )
		{
			return catalogRangeByCategory( -1, -1, book_isbn);
		}

		/// <summary>
		/// Specialized interface to catalogRangeByCategory.
		/// This Method returns all the books within the given range
		/// </summary>
		/// <param name="startPos">int</param>
		/// <param name="range">int</param>
		/// <returns>DataSet</returns>
		public DataSet catalogRange(int startPos, int range)
		{
			return catalogRangeByCategory( startPos, range, null);
		}
		
		/// <summary>
		/// This function returns a DataSet containing a subset of the larger dataset specified by the startPos and range parameters, along with a metadata table 
		/// </summary>
		/// <param name="startPos">int</param>
		/// <param name="range">int</param>
		/// <param name="book_isbn">int</param>
		/// <returns>DataSet</returns>
		protected DataSet catalogRangeByCategory(int startPos, int range, string book_isbn)
		{
			DataSet				dsBookRange;
			DataTable			dtBooks;
			DataTable			dtTemp;
			string				strExpr;
			string				strSort;
			DataRow[]			foundRows;
			int					endPos;
			int					RecordCount;
			DataViewRowState recState;

			dtTemp = dsAllBooks.Tables["Books"];
			dtBooks	= dtTemp.Clone();//create Empty Books Table

			if( book_isbn != null)
			{
				//return a single item
				strExpr = "isbn='" + book_isbn + "'";
			}
			else
			{
				strExpr = "";
			}

			strSort ="title";
			recState = DataViewRowState.CurrentRows;
			foundRows = dtTemp.Select(strExpr, strSort, recState);
			
			RecordCount = foundRows.Length;

			if( (startPos == -1) && (range == -1))
			{
				startPos = 0;
				range = RecordCount;
			}

			if( (startPos + range) > RecordCount)
			{
				endPos = RecordCount;
			}
			else
			{
				endPos = startPos + range;
			}

			for(int i = startPos; i < endPos; i ++)
			{
				dtBooks.ImportRow( (DataRow)foundRows[i] );
			}
			
			dsBookRange = new DataSet();
			dsBookRange.Tables.Add(	dtBooks );

			// add a summary table to the dataset
			dsBookRange.Tables.Add(  createSummaryTable( startPos, range, RecordCount)  ); 
			return dsBookRange;
		}
	}	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -