إن الجمع بين الإجراء المخزن يجعل الترحيل أبسط شيء، يرجى الاطلاع على كود المصدر التالي.
الإجراء المخزن الذي يتم تشغيله بواسطة فئة الترحيل هذه #region الإجراء المخزن الذي يتم تشغيله بواسطة فئة الترحيل هذه
/**//************************************************ *** ************
*
* وظيفة قوية، مقترنة بالإجراء المخزن التالي
*
********************************************************************************************************************************************************* * *****/
/**//*
-- جهاز النداء 1,10,0,0, 'EmployeeID>2 وEmployeeID<5' , 'Employees','*','LastName',0
إنشاء بيجر الإجراء
@PageIndex int,--صفحة الفهرس 1
@PageSize int,--عدد الصفحات في كل صفحة 2
@RecordCount int out,--إجمالي عدد الصفوف 3
@PageCount int out،-إجمالي عدد الصفحات 4
@WhereCondition Nvarchar(1000)،--شرط الاستعلام 5
@TableName nvarchar(500)،--اسم جدول الاستعلام 6
@SelectStr nvarchar(500) = '*',--عمود الاستعلام 7
@Order nvarchar(500)،--العمود المفرز 8
@OrderType بت = 0، - قم بتعيين نوع الفرز، القيمة غير 0 هي ترتيب تنازلي 9
@Groupby NVarChar(100) = ''
كما
أعلن @strSQL nvarchar(2000) - البيان الرئيسي
أعلن @strTmp nvarchar(1000) - متغير مؤقت
أعلن @strOrder nvarchar(1000) - نوع الفرز
إذا كان @OrderType != 0
يبدأ
تعيين @strTmp = '<(اختر دقيقة'
تعيين @strOrder = 'الترتيب حسب' + @Order +'تنازلي'
نهاية
آخر
يبدأ
تعيين @strTmp = '>(اختر الحد الأقصى'
تعيين @strOrder = 'الترتيب حسب' + @Order +' asc'
نهاية
المجموعة @strSQL = 'select top' + str(@PageSize) + ' ' + @SelectStr + ' from '
+ @TableName + 'حيث' + @Order + '' + @strTmp + '([')
+ @Order + ']) من (اختر أعلى ' + str((@PageIndex-1)*@PageSize) + ' ['
+ @Order + '] من ' + @TableName + '' + @strOrder + ') كـ tblTmp)'
+ @Groupby + @strOrder
إذا @WhereCondition != ''
set @strSQL = 'select top' + str(@PageSize) + ' ' + @SelectStr + ' from '
+ @TableName + 'حيث' + @Order + '' + @strTmp + '([')
+ @Order + ']) من (اختر أعلى ' + str((@PageIndex-1)*@PageSize) + ' ['
+ @Order + '] من ' + @TableName + ' حيث (' + @WhereCondition + ') '
+ @strOrder + ') كـ tblTmp) و (' + @WhereCondition + ') ' + @Groupby + @strOrder
إذا @PageIndex = 1
يبدأ
تعيين @strTmp = ''
إذا @WhereCondition != ''
set @strTmp = 'where (' + @WhereCondition + ')'
set @strSQL = 'select top' + str(@PageSize) + ' ' + @SelectStr + ' from '
+ @TableName + '' + @strTmp + ' ' + @Groupby + @strOrder
نهاية
تنفيذي (@strSQL)
--طباعة @strSQL
إذا @WhereCondition <> ''
يبدأ
SET @strTmp = 'SELECT -1 FROM' + @TableName + ' Where ' + (@WhereCondition)
نهاية
آخر
يبدأ
SET @strTmp = 'SELECT -1 FROM' + @TableName
نهاية
EXEC SP_EXECUTESQL @strTmp
SET @RecordCount = @@RowCount
- الحصول على العدد الإجمالي للصفحات
- دالة "CEILING": احصل على أصغر عدد صحيح لا يقل عن رقم معين
SET @PageCount = CEILING(@RecordCount * 1.0 / @PageSize)
يذهب
*************************************************************************************************************************************************************************** * *****************************/
/**//************************************************ *** **********************************
*
* الاستخدام
*
********************************************************************************************************************************************************* * ********************************/
/**//*
Dim ts As String = Request.Form.Item("txtDate")
إذا (ts = "" أو ts لا شيء) إذن
نهاية الخبر = Request.QueryString("txtDate")
نهاية إذا
Dim ts2 As String = Request.Form.Item("txtDate2")
إذا (ts2 = "" أو ts2 ليس شيئًا) إذن
ts2 = Request.QueryString("txtDate2")
End If
Dim ps As String = Request.Form.Item("pageIndex")
إذا (ps = "" أو ps لا شيء) إذن
ملاحظة = Request.QueryString("pageIndex")
نهاية إذا
كان Dim t كعدد صحيح = 2
خافت ع كعدد صحيح = 1
إذا كان ts لا شيء إذن
نهاية الخبر = ""
نهاية إذا
إذا ملاحظة لا شيء ثم
ملاحظة = ""
إنهاء إذا
لم يكن (ملاحظة = "") ثم
ع = عدد صحيح.تحليل (ملاحظة)
إنهاء إذا كان
جهاز النداء الخافت كجهاز النداء = جهاز النداء الجديد
pager.PageIndex = ص
حجم الصفحة = 20
pager.PageMode = PageMode.Str
pager.WhereCondition = "التاريخ بين Convert(datetime,'" + ts + "') وconvert(datetime,'" + ts2 + "')"
'pager.WhereCondition = "تحويل(char(10),TheDate,120)= '" + ts + "'"
pager.TableName = "LoadCountlog"
pager.SelectStr = "*"
بيجر.الطلب = "المعرف"
pager.OrderType = خطأ
Dim dt As System.Data.DataTable = pager.GetDatas(p)
myDataGrid.DataSource = dt
myDataGrid.DataBind ()
Dim goUrl As String = "WebForm1.aspx?txtDate=" + ts + "&txtDate2=" + ts2
Me.Label3.Text = "الإجمالي:" + pager.PageCount.ToString + "الصفحة،" + pager.RecordCount.ToString() + "Bar<strong>" + pager.OutPager(pager, goUrl, False) + "< /قوي>"
*/
#endregion
باستخدام النظام؛
باستخدام System.Data؛
باستخدام System.Data.SqlClient؛
باستخدام System.Configuration؛
باستخدام System.Collections؛
باستخدام System.Text؛
مساحة الاسم سولوكي
{
/**//// <الملخص>
/// وضع الترحيل
/// </الملخص>
التعداد العام PageMode
{
/**//// <الملخص>
///رقم الترحيل
/// </الملخص>
رقم = 0،
/**//// <الملخص>
/// ترحيل الأحرف
/// </الملخص>
شارع = 1
}
/**//// <الملخص>
/// يمكن لفئة الترحيل إجراء الترحيل من خلال الإجراءات المخزنة وهي قوية جدًا.
/// </الملخص>
بيجر الطبقة العامة
{
صفحة int الخاصة = 0؛
عدد السجلات الخاص int = 0;
حجم الصفحة الخاصة = 20 ؛
عدد الصفحات الخاصة int = 0;
عدد الصف الخاص int = 0؛
اسم الجدول سلسلة خاصة = ""؛
سلسلة خاصة حيثCondition = "1=1";
سلسلة خاصة SelectStr = "*";
ترتيب سلسلة خاص = ""؛
إجراء سلسلة خاصة = "بيجر"؛
نوع الطلب المنطقي الخاص = صحيح؛
PageMode الخاص pageMode =PageMode.Num;
سلسلة خاصة sqlConnectionString = ConfigurationSettings.AppSettings["database"];
قاعدة بيانات سلسلة خاصة = "dbo"؛
اتصال بيانات المنطقة # اتصال البيانات
/**//// <الملخص>
/// سلسلة اتصال البيانات
/// </الملخص>
سلسلة خاصة SqlConnectionString
{
يحصل
{
إرجاع this.sqlConnectionString;
}
تعيين
{
this.sqlConnectionString=value;
}
}
/**//// <summary>
///احصل على مثيل الاتصال
/// </الملخص>
/// <returns></returns>
خاص SqlConnection GetSqlConnectionString ()
{
يحاول
{
إرجاع SqlConnection جديد (SqlConnectionString)؛
}
يمسك
{
طرح استثناء جديد("سلسلة اتصال SQL غير صالحة.");
}
}
/**//// <الملخص>
/// مالك كائن البيانات
/// </الملخص>
سلسلة خاصة DatabaseOwner
{
يحصل
{
إرجاع this.databaseOwner؛
}
تعيين{
this.databaseOwner=value;
}
}
#endregion
public Pager()
{
//
// TODO: أضف منطق المنشئ هنا
//
//Enum.Parse(tyo
}
النداء العام (سلسلة connstr)
{
إذا (connstr!=null)
this.SqlConnectionString=connstr;
}
#منطقة
/**//// <الملخص>
/// اسم الإجراء المخزن المراد تشغيله له إجراء مخزن ترحيل افتراضي.
/// </الملخص>
إجراء السلسلة العامة
{
يحصل{
إرجاع هذا الإجراء؛
}
تعيين {
إذا (القيمة == فارغة || القيمة. الطول <=0)
{
this.procedure='pager';
}
آخر
{
this.procedure=value;
}
}
}
/**//// <summary>
/// عدد الصفحات التي سيتم عرضها حاليا
/// </الملخص>
مؤشر الصفحات العام int
{
يحصل
{
إرجاع this.pageIndex;
}
تعيين
{
this.pageIndex = value;
}
}
/**//// <summary>
/// إجمالي عدد الصفحات
/// </الملخص>
عدد الصفحات العام
{
يحصل
{
إرجاع this.pageCount;
}
تعيين
{
this.pageCount = value;
}
}
/**//// <summary>
/// إجمالي عدد الصفوف
/// </الملخص>
عدد السجلات int العام
{
يحصل
{
إرجاع this.recordCount;
}
تعيين
{
this.recordCount = value;
}
}
/**//// <summary>
/// عدد العناصر في كل صفحة
/// </الملخص>
حجم الصفحة العام
{
يحصل
{
إرجاع this.pageSize;
}
تعيين
{
this.pageSize = value;
}
}
/**//// <summary>
///اسم الجدول
/// </الملخص>
سلسلة عامة اسم الجدول
{
يحصل
{
عودة اسم الجدول؛
}
تعيين
{
this.tableName = value;
}
}
/**//// <summary>
/// استعلام شرطي
/// </الملخص>
سلسلة عامة WhereCondition
{
يحصل
{
العودة حيث الحالة؛
}
تعيين
{
حيث الشرط = القيمة؛
}
}
/**//// <summary>
/// هدف الاستعلام (هدف البحث)، مثل: AddTime AS time، ID AS number
/// </الملخص>
سلسلة عامة SelectStr
{
يحصل
{
إرجاع تحديد Str؛
}
تعيين
{
SelectStr = value;
}
}
/**//// <summary>
/// الأعمدة مرتبة
/// </الملخص>
ترتيب السلسلة العامة
{
يحصل
{
أمر الإرجاع؛
}
تعيين
{
النظام = القيمة؛
}
}
/**//// <summary>
/// نوع الفرز true:asc false:desc
/// </الملخص>
نوع الطلب المنطقي العام
{
يحصل
{
نوع أمر الإرجاع؛
}
تعيين
{
orderType = value;
}
}
/**//// <الملخص>
/// وضع الترحيل
/// </الملخص>
PageMode العام PageMode
{
يحصل
{
إرجاع this.pageMode;
}
تعيين
{
this.pageMode = value;
}
}
/**//// <الملخص>
/// احصل على الكمية التي تم إرجاعها حاليًا
/// </الملخص>
عدد الصفوف العام
{
يحصل
{
إرجاع this.rowCount;
}
}
مجموعة سلسلة خاصة؛
سلسلة عامة Groupby
{
يحصل
{
إرجاع this.groupby;
}
تعيين
{
this.groupby = value;
}
}
#endregion
/**//// <الملخص>
/// نتائج بحث ترقيم الصفحات
/// </الملخص>
GetDatas DataTable العامة (int pageIndex)
{
this.pageIndex = pageIndex;
بيجر بيجر = هذا؛
//pager.pageIndex = pageIndex;
DataTable returnTb = Pagination(ref pager).Tables[0];
this.rowCount = returnTb.Rows.Count;
عودة العودةTb؛
}
/**//// <summary>
/// وظيفة الإجراء المخزن لعملية الترحيل
/// </الملخص>
/// <param name="pager"></param>
/// <returns></returns>
ترقيم صفحات مجموعة البيانات الخاصة (المرجع بيجر بيجر)
{
باستخدام (SqlConnection myConnection = GetSqlConnectionString() )
{
SqlDataAdapter myCommand = new SqlDataAdapter(pager.databaseOwner + "."+pager.Procedure, myConnection);
myCommand.SelectCommand.CommandType = CommandType.StoredProcedure
;
المعلمةPageIndex.Value = pager.PageIndex;
myCommand.SelectCommand.Parameters.Add(parameterPageIndex)
;
المعلمةPageSize.Value = pager.PageSize;
myCommand.SelectCommand.Parameters.Add(parameterPageSize);
SqlParameter ParameterRecordCount = new SqlParameter("@RecordCount", SqlDbType.Int);
المعلمةRecordCount.Value = 0؛
parameterRecordCount.Direction = ParameterDirection.InputOutput;
myCommand.SelectCommand.Parameters.Add(parameterRecordCount);
SqlParameterparameterPageCount = new SqlParameter("@PageCount", SqlDbType.Int);
المعلمةPageCount.Value = 0؛
ParameterPageCount.Direction = ParameterDirection.InputOutput;
(
parameterPageCount);
المعلمةWhereCondition.Value = pager.WhereCondition;
parameterWhereCondition
);
المعلمةTableName.Value = pager.TableName;
myCommand.SelectCommand.Parameters.Add(parameterTableName)
;
المعلمةOrder.Value = pager.Order;
(
parameterOrder);
المعلمةSelectStr.Value = pager.SelectStr;
myCommand.SelectCommand.Parameters.Add(parameterSelectStr);
SqlParameter ParameterGroupby = new SqlParameter("@Groupby", SqlDbType.NVarChar, 100);
المعلمةGroupby.Value = pager.Groupby;
myCommand.SelectCommand.Parameters.Add(parameterGroupby);
SqlParameter ParameterOrderType = new SqlParameter("@OrderType", SqlDbType.Bit);
parameterOrderType.Value = pager.OrderType==false?0:1;
myCommand.SelectCommand.Parameters.Add(parameterOrderType);
DataSet returnDS = new DataSet();
//SqlDataAdapter sqlDA = myCommand.crnew SqlDataAdapter(myCommand);
myCommand.Fill(returnDS);
pager.PageCount = (int)parameterPageCount.Value;
pager.RecordCount = (int)parameterRecordCount.Value;
return returnDS;
}
}
إنشاء ترقيم الصفحات #region إنشاء ترقيم الصفحات
/**//// <الملخص>
/// إنشاء تنسيق الترحيل
/// </الملخص>
/// <param name="pager"></param>
/// <param name="url"></param>
/// <param name="isBr"></param>
/// <returns></returns>
سلسلة OutPager العامة (جهاز النداء، سلسلة URL، bool isBr)
{
StringBuilder return OurWml;
إذا (isBr)
{
return OurWml= new StringBuilder("["+ pager.PageCount.ToString() + "page," + pager.RecordCount.ToString() +"bar]<br/>");
}
آخر
{
return OurWml = new StringBuilder();
}
إذا (pager.PageMode == PageMode.Num)
{
// الرقم المعروض في كل صف من الترحيل
عدد الصفحات int = 10؛
صفحات كثافة العمليات = 0؛
int startInt = 1;
int endInt = pager.PageCount;
int i = 1;
سلسلة endStr = "";
إذا (pager.PageCount>pagersCount)
{
// مزدوج ك = ;
pagers =pager.PageIndex /pagersCount;
إذا (الاستدعاء == 0)
{
أجهزة الاستدعاء = 1؛
}
وإلا إذا ((pager.PageIndex % pagersCount)!=0)
{
أجهزة الاستدعاء +=1;
}
endInt = pagers *pagersCount;
إذا (pager.PageIndex <= endInt)
{
startInt = endInt +1 - pagersCount;
إذا (startInt <1)
{
startInt = 1;
}
}
//pagersCount عندما تكون كمية العرض غير كافية
إذا (endInt>=pager.PageCount)
{
endInt = pager.PageCount;
}
آخر
{
//إذا (pager.PageIndex)
endStr = "<a href="";
endStr += url + "&pageIndex=" + (endInt + 1).ToString() + "" title='page" + (endInt + 1).ToString()+"page'>";
endStr += ">>";
endStr += "</a> ";
}
إذا (صفحات الاستدعاء > 1)
{
return OurWml.Append("<a href="");
return OurWml.Append(url + "&pageIndex=" + (startInt - 1).ToString() + "" title='page" + (startInt - 1).ToString()+"page'>");
return OurWml.Append("<<");
return OurWml.Append("</a> ");
}
}
لـ (i = startInt; i<=endInt;i++)
{
إذا (i!=pager.PageIndex)
{
return OurWml.Append("<a href="");
return OurWml.Append(url + "&pageIndex=" + i.ToString() + "" title='page"+ i.ToString()+"page'>");
return OurWml.Append("["+i.ToString() + "]");
return OurWml.Append("</a> ");
}
آخر
{
return OurWml.Append("<u>"+ i.ToString() + "</u>");
}
}
return OurWml.Append(endStr);
return return OurWml.Append("<br/>").ToString();
}
آخر
{
إذا (pager.PageIndex > 1)
{
return OurWml.Append("<a href="");
return OurWml.Append(url + "&pageIndex=" + (pager.PageIndex -1).ToString() + "">");
return OurWml.Append("الصفحة السابقة");
return OurWml.Append("</a> ");
}
إذا (pager.PageIndex <pager.PageCount)
{
return OurWml.Append(pager.PageIndex.ToString());
return OurWml.Append("<a href="");
return OurWml.Append(url + "&pageIndex=" + (pager.PageIndex +1).ToString() + "">");
return OurWml.Append("الصفحة التالية");
return OurWml.Append("</a> ");
}
return return OurWml.Append("<br/>").ToString();
}
}
#endregion
}
}
http://www.cnblogs.com/solucky/archive/2006/09/20/509741.html