// رمز المصدر هذا هو التعلم مرجع فقط ، وليس لأي أغراض تجارية ؛
// إذا كنت بحاجة إلى تعديل التحكم وإعادة التحكم فيه ، فاحتفظ بمعلومات حقوق الطبع والنشر للرمز المصدر الكامل!
// للحصول على معلومات حول ترقية التحكم ومعلومات إصدار التحكم الجديدة ، يرجى الانتباه إلى www.webdiyer.com.
باستخدام النظام ؛
باستخدام System.io ؛
باستخدام system.web ؛
باستخدام system.web.ui ؛
باستخدام system.web.ui.webControls ؛
باستخدام system.web.ui.htmlcontrols ؛
باستخدام System.Collections.speciped ؛
باستخدام system.text ؛
باستخدام System.componentModel ؛
باستخدام system.componentmol.design ؛
باستخدام System.Collections ؛
مساحة الاسم wuqi.webdiyer
{{
#Region ASPNETPAGER CONTROL
#REGION التحكم الوصف والمثال
/// <summary>
/// لعناصر تحكم الخادم لبيانات ترحيل البيانات في تطبيق الويب ASP.NET.
/// </summary>
/// على عكس التحكم في DataGrid ، فإن التحكم في ترحيل ASPNETPAGER نفسه لا يعرض أي بيانات ، ولكنه يعرض فقط عنصر التنقل في الصفحة. يمكن أن يروي هذا التحكم بيانات البيانات ، ومكرر البيانات ، والمكرر ، كبير!
/// <p> ASPNETPAGER 2.0 تمت إضافة وظيفة الترحيل من خلال عنوان URL ، والتي تتيح للزائرين إدخال عنوان URL المقابل مباشرة للوصول إلى أي صفحة ، ويمكن لمحرك البحث أيضًا استرداد كل صفحة. </p>
]
/// <انظر CREF = "RecordCount"/> تحدد السمة العدد الإجمالي لجميع البيانات المراد تربيتها في الترحيل.
/// إذا لم يتم تحديد برنامج معالجة الأحداث <see cref = "pagechanged" .
/// أن طريقة الترحيل الخاصة بعنصر التحكم ASPNETPAGER هي في الأساس نفس صورة DataGrid ، أي في برنامج معالجة الأحداث <see cref = "pagechanged" ، <see cref = "pagechangedeventargs" من <see cref = "pagechangedeventargs.newpageIndex"/> يتم تعيين قيمة <see cref = "currentpageindex"/> سمة <see cref = "currentpageindex"/> ، ثم إعادة صياغة عناصر تحكم البيانات الجديدة وعرض البيانات. </p> </mouns>
/// <exment> توضح الأمثلة التالية كيفية استخدام ASPNETPAGER لصفحة DATAGRID.
/// <code> <!
/// <٪@ page language = "c#" ٪>
/// <٪@ استيراد المساحة = "system.data" ٪>
/// <٪@استيراد المساحة = "system.data.sqlclient" ٪>
/// <٪@استيراد المساحة = "system.configuration" ٪>
]
/// <html>
/// <head>
/// <title> مرحبًا بك في WebDiyer.com </itlem>
/// <script runat = "server">
/// sqlconnection conn ؛
/// sqlcommand cmd ؛
/// void page_load (كائن SRC ، EventArgs E)
/// {
// conn = new SQLConnection (configurationsettings.appsettings ["connstr"] ؛
/// if (! page.ispostback)
/// {
/// cmd = new SqlCommand ("getNews" ، conn) ؛
/// cmd.CommandType = commandtype.storedprocedure ؛
/// cmd.parameters.add ("posgeindex" ، 1) ؛
/// cmd.parameters.add ("pagesize" ، 1) ؛
/// cmd.parameters.add ("docount" ، true) ؛
// conn.open () ؛
/// pager.recordCount = (int) cmd.executescalal () ؛
// conn.close () ؛
/// bindData () ؛
///}
///}
///
/// void bindData ()
/// {
/// cmd = new SqlCommand ("getNews" ، conn) ؛
/// cmd.CommandType = commandtype.storedprocedure ؛
/// cmd.parameters.add ("posgeindex" ، pager.currentPageIndex) ؛
/// cmd.parameters.add ("pagesize" ، pager.pagesize) ؛
/// cmd.parameters.add ("docount" ، false) ؛
// conn.open () ؛
/// datagrid1.datasource = cmd.executereader () ؛
/// datagrid1.databind () ؛
// conn.close () ؛
/// pager.custominFotext = "Total Record: <font color =" blue "> <b>"+pager.recordCount.toString ()+"</font>" "؛
/// pager.custominFotext+= "إجمالي الصفحة رقم الصفحة: <font color =" blue "> <b>"+pager.pagecount.toString ()+"</font>" "؛
/// pager.custominfotext+= "الصفحة الحالية: <font color =" red "> <b>"+pager.currentPageIndex.toString ()+"</b> </font>"
///}
/// void changepage (Object SRC ، PagechangedeventArgs e)
/// {
/// pager.currentPageIndex = E.NewPageIndex ؛
/// bindData () ؛
///}
/// </script>
/// <meta http-equiv = "content-language" content = "zh-cn">
/// <meta http-equiv = "content-type" content = "text/html ؛ charset = gb2312">
/// <meta name = "general" content = "editPlus">
]
/// </head>
/// <body>
/// <form runat = "server" id = "form1">
/// <asp: dataGrid id = "dataGrid1" runat = "server"/>
/// <webdiyer: aspnetpager id = "pager"
/// Runat = "Server"
/// pagesize = "8"
/// numericbuttoncount = "8"
/// showcustominfosection = "Left"
/// pingbuttonspacing = "0"
/// showinputbox = "دائما"
/// cssclass = "mypager"
/// أفقيًا = "يمين"
/// onpagechanged = "changepage"
/// submitbuttontext = "Turn to"
/// numericbuttontextFormatString = "[{0}]"/>
/// </form>
/// </body>
/// </html>
///]]>
/// </code>
/// <p> إجراء تخزين خادم SQL المستخدم في هذا المثال: </p>
/// <code>
/// <!
/// إنشاء الإجراءات getNews
/// (pagesize int ،
/// pageindex int ،
docount بت)
/// مثل
/// تعيين nocount على
/// if (docount = 1)
/// حدد العد (معرف) من الأخبار
/// آخر
/// يبدأ
/// DECRAYEREVENTABLE
/// DECLARE PAGELOWERBOUND int
/// DECRIARE PAGEUPPERBOUND int
/// setpageLowerBound = (pageIndex-)*@pagesize
/// set @[البريد الإلكتروني المحمي] [البريد الإلكتروني المحمي]
/// تعيين rowcountpageupperbound
/// insert في indextable (NID) حدد معرف من ترتيب الأخبار عن طريق addtime desc
/// حدد O.ID ، O.Source ، O.Title ، O.AddTime من الأخبار
/// و t.id> pageelowerBound و T.ID <= pageupperbound Order by T.ID
/// نهاية
/// تعيين nocount
/// يذهب
///]]>
/// </code> </efteal>
#endregion
[DefaultProperty ("Pagesize")]
[defaultevent ("pagechanged")]
[parsechildrn (خطأ)]
[استمرار الأطفال (خطأ)]
[الوصف ("" التحكم في ترقيم الصفحات لتطبيقات الويب ASP.NET ")]]]]]]]]]]]]] سنوات]]]]]]]]]]]]] سنوات
[المصمم (typeof (pagerdesigner)]]]]
[ToolboxData (<{0}: aspnetpager runat = server> </ {0}: aspnetpager> ")]
الطبقة العامة ASPNETPAGER: لوحة ، inamingcontainer ، ipostbackeventhandler ، ipostbackdatahandler
{{
سلسلة خاصة CSSClassName ؛
سلسلة خاصة urlPageIndExName = "صفحة" ؛
urlpaging bool bool = false ؛
سلسلة خاصة InportPageIndex ؛
سلسلة خاصة currenturl = null ؛
urlparams namevalueCollection = Null ؛
/// الحصول على قيمة أو تعيين قيمة.
/// </summary>
[متصفح (صحيح) ،
الفئة ("زر التنقل") ، DefaultValue (true) ، الوصف ("يحدد عندما يبقى الماوس على زر التنقل ، هو موجه أداة العرض"]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] سنوات]]]
BOOL PRECAL DISTRICATIONTOOLTIP
{{
يحصل
{{
Object obj = viewState ["disheravigationTooltip"] ؛
عودة (OBJ == NULL)؟
}
تعيين
{{
ViewState ["disheravigationTooltip"] = value ؛
}
} /// <summary>
/// الحصول على أو تعيين أداة زر التنقل للمطالبة بتنسيق النص.
/// </summary>
[متصفح (صحيح) ،
الفئة ("زر التنقل") ،
DefaultValue ("انتقل إلى الصفحة رقم {0}") ،
تجاهل ("أدوات زر التنقل في الصفحة تنسيق نص تذكير")]]]
سلسلة عامة
{{
يحصل
{{
Object obj = viewState ["savigationToolTipTextFormatString"] ؛
إرجاع (OBJ == NULL)؟
}
تعيين
{{
نصيحة السلسلة = القيمة ؛
if.trim ().
tip = "{0}" ؛
ViewState
}
} /// <summary>
/// الحصول على قيمة أو تعيين قيمة.
/// </summary>
/// <lmarks>
/// عند ضبط هذه القيمة على True وعدم استخدام زر الصورة ، سيتم استبدال قيمة زر فهرس الصفحة 1 و 2 و 3 ، وما إلى ذلك بالأحرف الصينية أولاً واثنان وثلاثة.
/// </remarks>
[متصفح (صحيح) ،
الفئة ("زر التنقل") ،
DefaultValue (خطأ) ،
تم استبدال زر قيمة فهرس الصفحة (ما إذا كان زر قيمة فهرس الصفحة بالأرقام الصينية الأولى والثانية والثالثة "]]]
Bool bool chinesepageIndex
{{
يحصل
{{
Object OBJ = ViewState ["ChinesepageIndex"] ؛
العودة (OBJ == فارغة)؟
}
تعيين
{{
ViewState ["chinesepageIndex"] = value ؛
}
} /// <summary>
/// الحصول على أو تعيين تنسيق العرض للنص على زر التنقل في الرقم.
/// </summary>
/// <value>
/// string ، حدد تنسيق العرض للنص الموجود في قيمة فهرس الصفحة للصفحة ، والقيمة الافتراضية هي <see cref = "string.empty"/> ، أي أن الخاصية لم يتم تعيينها. </value>
/// <lmarks>
/// استخدم خصائص NumerCbuttonTextFormstring لتحديد تنسيق العرض لزر القيمة المفهرسة.
/// إذا تم تعيين القيمة على "[{0}]" ، فسيتم عرض نص الفهرس على النحو التالي: [1] [2] ... ، قم بتعيين القيمة إلى "-{0}-" ، ثم اقلب نص الفهرس إلى: -1--2- -3- ...
/// </remarks>
[متصفح (صحيح) ،
DefaultValue ("") ،،
الفئة ("زر التنقل") ،
تجريد ("تنسيق عرض النص في زر فهرس الصفحة العددي")]]
السلسلة العامة NumerCbuttonTextFormatString
{{
يحصل
{{
كائن OBJ = ViewState
العودة (OBJ == NULL)؟
}
تعيين
{{
ViewState ["numericButtonTexTextFormatring"] = value ؛
}
} /// <summary>
/// الحصول على أو تعيين نوع زر التنقل في الترحيل ، حتى لو كان النص لا يزال صورة.
/// </summary>
/// <lmarks>
/// لاستخدام زر الصورة ، تحتاج إلى إعداد الصور التالية: عشر قيم من 0 إلى 9 (عندما يتم تعيين ShowPageIndex على TRUE) ، الصفحة الأولى ، الصفحة السابقة ، الصفحة التالية ، الصفحة الأخيرة والمزيد المزيد والمزيد من الصفحة (...) خمسة أزرار صور (عندما يتم تعيين showfirstlast و showprevnext على صحيح) ،
/// إذا كان الحاجة إلى الزر العددي لفهرس الصفحة الحالي ليكون مختلفًا عن الأزرار الرقمية الفهرسة في الصفحة الأخرى ، فأنت بحاجة إلى إعداد صورة الزر لفهرس الصفحة الحالي ؛
/// إذا كانت صورة الصفحة الأولى المعطلة ، والصفحة الأخيرة ، والصفحة التالية ، والصفحة الأخيرة تختلف عن صورة الأزرار العادية ، فأنت بحاجة إلى إعداد صور هذه الأزرار الأربعة في الحالة المعوقة ؛
/// <p> <b> قواعد التسمية في ملف الصورة هي كما يلي: </b> </p>
/// <p> من 0 إلى 9 أزرار عددية ، يجب تسمية الصورة "Value+ButtonImagenameExtexexenses+ButtonImageStentation".
/// ButtonImageStenting هو اسم لاحقة ملف الصورة ، مثل .gif أو .jpg ، وما إلى ذلك ، أي أنواع ملفات صورة يمكن عرضها في المتصفح. على سبيل المثال ، يمكن تسمية ملف الصورة لفهرس الصفحة "1" "1.gif" أو "1.jpg" ،
/// عندما يكون لديك مجموعتان أو أكثر من ملفات الصور ، يمكنك التمييز بين مجموعات مختلفة من الصور من خلال تحديد قيمة سمة buttonimagenameextent. "1.gif". قريباً. </p>
/// <p> يبدأ اسم ملف الصورة لزر الصفحة الأولى بـ "First". ما إذا كان buttonimagenameexketnsion يستخدم ButtonImagenameExtense يعتمد على إعدادات الزر العددي وما إذا كانت هناك المزيد من الصور. </p>
/// </remarks>
/// <eample>
/// مثال شظية الرمز التالي إذا كان يستخدم زر الصورة:
/// <p>
/// <code> <!
/// <webdiyer: aspnetpager runat = "server"
/// id = "Pager1"
/// onpagechanged = "changepage"
/// pingbuttontype = "Image"
/// imagepath = "الصور"
/// buttonimagenameextent = "n"
/// distabledbuttonimagenameextension = "g"
/// buttonimagextent = "gif"
/// cpibuttonimagenameexensive = "r"
/// pingbuttonspacing = 5/>
///]]>
/// </code>
/// </p>
/// </example>
[متصفح (صحيح) ،
DefaultValue (Pingbuttontype.text) ،
الفئة ("زر التنقل") ،
وصف
pingbuttontype العامة pingbuttisepe
{{
يحصل
{{
كائن OBJ = ViewState
العودة (OBJ == NULL)؟
}
تعيين
{{
ViewState
}
} /// <summary>
/// احصل على أو تعيين نوع الزر العددي للملاحة ، وهو أمر صالح فقط عند ضبط PingButtonType على الصورة.
/// </summary>
/// <lmarks>
/// عندما تقوم بتعيين pingbuttontype على الصورة ، عندما لا تريد أن يستخدم الزر الرقمي للفهرس .
/// </remarks>
[متصفح (صحيح) ،
DefaultValue (Pingbuttontype.text) ،
الفئة ("زر التنقل") ،
Crafcripting ("Type of" Page Mavigation Numeric Button ")]]]]]]]]]]]]]]
Pingbuttontype Public Pingbuttontype numericbuttontype
{{
يحصل
{{
كائن OBJ = ViewState
العودة (OBJ == NULL)؟
}
تعيين
{{
ViewState ["NumericButtonType"] = value ؛
}
} /// <summary>
/// الحصول على أو تعيين نوع الصفحة الأولى ، الصفحة الأخيرة ، الصفحة التالية والصفحة الأخيرة.
/// </summary>
/// <lmarks>
/// عندما تقوم بتعيين pingbuttontype على الصورة ولكن لا ترغب في استخدام الصورة للصفحة التالية ، التالية ، الصفحة التالية ، والصفحة الأخيرة ، يمكنك تعيين القيمة على النص ، والتي ستجعل الأزرار الأربعة السابقة في السابق أربعة أزرار تستخدم النص بدلاً من زر الصورة.
/// </remarks>
[متصفح (صحيح) ،
الفئة ("زر التنقل") ،
DefaultValue (Pingbuttontype.text) ،
وصف
pingbuttontype العامة
{{
يحصل
{{
Object OBJ = ViewState ["NavigationButtonType"] ؛
العودة (OBJ == NULL)؟
}
تعيين
{{
ViewState ["NavigationButtonType"] = value ؛
}
} /// <summary>
/// احصل على أو تعيين نوع زر "المزيد من الصفحات" (...) ، وهو أمر صالح فقط عندما يتم ضبط PingButtonType على الصورة.
/// </summary>
/// <lmarks>
/// عندما تقوم بتعيين PagingButtonType على الصورة ولكن لا تريد المزيد من الزر صفحات (...) لاستخدام الصور ، يمكنك تعيين هذه القيمة على النص ، والتي ستجعل المزيد من أزرار الصفحة تستخدم النص بدلاً من زر الصورة.
/// </remarks>
[متصفح (صحيح) ،
الفئة ("زر التنقل") ،
DefaultValue (Pingbuttontype.text) ،
Discripting ("المزيد من الصفحات" (...) نوع الزر ")]]
Pingbuttontype العامة MoreButtonpe
{{
يحصل
{{
Object OBJ = ViewState ["MoreButtisePe"] ؛
العودة (OBJ == NULL)؟
}
تعيين
{{
ViewState ["MoreButtisePe"] = value ؛
}
} /// <summary>
/// الحصول على أو تعيين المسافة بين زر التنقل في الترحيل.
/// </summary>
[متصفح (صحيح) ،
الفئة ("زر التنقل") ،
DefaultValue (typeof (الوحدة) ، "5px") ،
وصف
الوحدة العامة pingbuttonspacing
{{
يحصل
{{
Object obj = viewState ["pingbuttonspacing"] ؛
عودة (OBJ == NULL)؟
}
تعيين
{{
ViewState ["pingbuttonspacing"] = value ؛
}
} /// <summary>
/// الحصول على أو تعيين قيمة ، مما يشير إلى ما إذا كانت أزرار الصفحة الأولى والأخيرة معروضة على عنصر التنقل في الصفحة.
/// </summary>
[متصفح (صحيح) ،
discripting
الفئة ("زر التنقل") ،
DefaultValue (صحيح)]
Bool Bool showfirstlast
{{
يحصل
{{
Object obj = viewState ["showfirstlast"] ؛
عودة (OBJ == NULL)؟
}
set {viewState ["showfirtlast"] = value ؛}
} /// <summary>
/// الحصول على قيمة أو إعدادها ، تشير هذه القيمة إلى ما إذا كانت الصفحة السابقة والصفحة التالية معروضة في عنصر التنقل في الصفحة.
/// </summary>
[متصفح (صحيح) ،
discripting
الفئة ("زر التنقل") ،
DefaultValue (صحيح)]
Bool Bool showprevnext
{{
يحصل
{{
Object obj = viewState ["showprevnext"] ؛
عودة (OBJ == NULL)؟
}
SET {ViewState ["showprevnext"] = value ؛}
} /// <summary>
/// الحصول على أو تعيين قيمة تشير إلى ما إذا كان يتم عرض زر قيمة فهرس الصفحة في عنصر التنقل في الصفحة.
/// </summary>
[متصفح (صحيح) ،
تجريد ("ما إذا كان يتم عرض زر القيمة في عنصر التنقل في الصفحة") ،) ،
الفئة ("زر التنقل") ،
DefaultValue (صحيح)]
Bool Bool ShowPageIndex
{{
يحصل
{{
Object OBJ = ViewState ["ShowPageIndex"] ؛
عودة (OBJ == NULL)؟
}
SET {ViewState ["ShowPageIndex"] = value ؛}
} /// <summary>
/// الحصول على أو تعيين على النص المعروض بواسطة زر الصفحة الأولى.
/// </summary>
[متصفح (صحيح) ،
الوصف ("نص معروض على زر الصفحة الأولى") ،
الفئة ("زر التنقل") ،
DefaultValue ("<font face =" webdings "> 9 </font>")]]]
سلسلة عامة FirstPageText
{{
يحصل
{{
Object OBJ = ViewState ["FirstPageText"] ؛
العودة (OBJ == NULL)؟
}
SET {ViewState ["FirstPageText"] = value ؛}
} /// <summary>
/// الحصول على أو تعيين على نص معروض في زر الصفحة السابقة.
/// </summary>
[متصفح (صحيح) ،
الوصف ("نص معروض في زر الصفحة السابقة") ،
الفئة ("زر التنقل") ،
DefaultValue ("<font face =" webdings "> 3 </font>")]]]
السلسلة العامة prevageText
{{
يحصل
{{
Object obj = viewState ["prevageText"] ؛
العودة (OBJ == NULL)؟
}
SET {ViewState ["PrevPageText"] = value ؛}
} /// <summary>
/// الحصول على أو تعيين النص المعروض في الصفحة التالية.
/// </summary>
[متصفح (صحيح) ،
الوصف ("نص معروض على زر الصفحة التالية") ،
الفئة ("زر التنقل") ،
DefaultValue ("<font face =" webdings "> 4 </font>")]]]
السلسلة العامة NextPageText
{{
يحصل
{{
Object OBJ = ViewState ["NextPageText"] ؛
العودة (OBJ == NULL)؟
}
SET {ViewState ["NextPageText"] = value ؛}
} /// <summary>
/// الحصول على أو تعيين النص المعروض على أنه زر الصفحة الأخيرة.
/// </summary>
[متصفح (صحيح) ،
الوصف ("نص معروض على زر الصفحة الأخيرة") ،
الفئة ("زر التنقل") ،
DefaultValue ("<font face =" webdings ">: </font>")]]]
السلسلة العامة LastPageText
{{
يحصل
{{
Object OBJ = ViewState ["lastPageText"] ؛
العودة (OBJ == NULL)؟
}
SET {ViewState ["LastPageText"] = value ؛}
} /// <summary>
/// احصل على أو تعيين في عدد الأزرار العددية المعروضة في نفس الوقت في عنصر التنقل في الصفحة في التحكم <see cref = "aspnetpager"/>.
/// </summary>
[متصفح (صحيح) ،
discripting
الفئة ("زر التنقل") ،
DefaultValue (10)]
العام int numericbuttoncount
{{
يحصل
{{
Object obj = viewState ["numericButtonCount"] ؛
عودة (OBJ == NULL)؟
}
SET {ViewState ["NumericButtonCount"] = value ؛}
} /// <summary>
/// الحصول على أو تعيين قيمة تحدد ما إذا كانت الأزرار المعوقة معروضة.
/// </summary>
/// <lmarks>
/// يتم استخدام هذه القيمة لتحديد زر التنقل في ترقيم الصفحات المعاق. سيكون زر الصفحة الأخيرة مع تعطيل ، ولن يكون للأزرار المحظورة أي رابط ، والنقر على الزر لن يكون له أي تأثير.
/// </remarks>
[متصفح (صحيح) ،
الفئة ("زر التنقل") ،
Draispring ("سواء كان لإظهار زر المعوقين") ،
DefaultValue (صحيح)]
Bool Bool showdisabledbuttons
{{
يحصل
{{
Object obj = viewState ["showDisabledButton"] ؛
عودة (OBJ == NULL)؟
}
تعيين
{{
ViewState ["ShowDisabledButtons"] = value ؛
}
}
#endregion
#أزرار الصورة
/// <summary>
/// الحصول على أو تعيين مسار ملف الصورة عند استخدام زر الصورة.
/// </summary>
[متصفح (صحيح) ،
الفئة ("زر الصورة") ،
Crafcripting ("عند استخدام زر الصورة ، حدد مسار ملف الصورة") ، ") ،) ،) ،) ،) ،
DefaultValue (NULL)]
السلسلة العامة ImagePath
{{
يحصل
{{
String imgPath = (String) ViewState ["ImagePath"] ؛
إذا (imgpath! = فارغة)
imgpath = this.rsolveurl (imgpath) ؛
إرجاع Imgpath ؛
}
تعيين
{{
String imgpath = value.trim ().
ViewState ["ImagePath"] = (imgpath.endswith ("/")؟ imgpath: imgpath+"/" ؛
}
}
/// <summary>
/// الحصول على أو تعيين عند استخدام زر الصورة ، ونوع الصورة ، مثل GIF أو JPG ، هذه القيمة هي اسم لاحقة ملف الصورة.
/// </summary>
[متصفح (صحيح) ،
الفئة ("زر الصورة") ،
DefaultValue (". GIF") ،
الوصف ("عند استخدام زر الصورة ، ونوع الصورة ، مثل GIF أو JPG ، هذه القيمة هي اسم لاحقة ملف الصورة")]]
السلسلة العامة buttonimageextent
{{
يحصل
{{
Object obj = viewState ["buttonimageStent"] ؛
العودة (OBJ == NULL)؟
}
تعيين
{{
سلسلة ext = value.trim () ؛
ViewState ["buttonimageextense"] = (ext.startswith (".")؟ ext: ("."+ext) ؛
}
}
/// <summary>
/// الحصول على أو تعيين سلسلة لاحقة لاسم ملف الصورة المخصص لتمييز الأنواع المختلفة من الأزرار.
/// </summary>
]
/// يوجد حاليًا مجموعتان من الأزرار ، أحدهما "1" يمكن أن يكون "1f.gif" ، واسم صورة "1" في المجموعة الأخرى يمكن أن يكون "1N.GIF" ، منها f و n هي buttonimagenameextension. </تصريحات>
[متصفح (صحيح) ،
DefaultValue (NULL) ،
الفئة ("زر الصورة") ،
Discripting ("لاحقة اسم ملف الصورة المخصصة) ، مثل buttonimagenamexketency من الصورة" 1f.gif "هي" f ""]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] سنوات]]
السلسلة العامة buttonimageenameextension
{{
يحصل
{{
إرجاع (سلسلة) ViewState
}
تعيين
{{
ViewState ["buttonimagenameextension"] = value ؛
}
}
/// <summary>
/// الحصول على أو تعيين لاحقة اسم الصورة لزر فهرس الصفحة الحالي.
/// </summary>
/// <lmarks>
/// عندما يتم تعيين <see cref = "pingbuttontype"/> أزرار الفهرس.
/// </remarks>
[متصفح (صحيح) ،
DefaultValue (NULL) ،
الفئة ("زر الصورة") ،
Crafcripting ("اسم الصورة الوهمة للزراعة في زر فهرس الصفحة الحالي")]]
السلسلة العامة cpibuttonimagnameextension
{{
يحصل
{{
كائن OBJ = ViewState
إرجاع (OBJ == NULL)؟
}
تعيين
{{
ViewState ["cpibttonimagenameExension"] = value ؛
}
}
/// <summary>
/// احصل على أو تعيين زر "تعطيل الزر".
/// </summary>
/// <lmarks>
/// عندما يتم تعيين <see cref = "pingbuttontype"/> على الصورة ، تتيح لك هذه القيمة تعيين زر التنقل في الصفحة (بما في ذلك الصفحة الأولى ، الصفحة السابقة ، الصفحة السابقة ، الصفحة السابقة ، الصفحة السابقة ، الصفحة السابقة ، سلسلة لاحقة اسم ملف الصورة في الصفحة التالية والصفحة الأخيرة من الصفحة الأخيرة ، بحيث يمكن أن يختلف زر التنقل في الصفحة المعطلة عن زر التنقل في الصفحة العادية. إذا لم يتم تعيين هذه القيمة ، فإن القيمة الافتراضية هي <see cref = "buttonimagerextent"/> ، أي أن زر التنقل في الصفحة المعاق يستخدم نفس صورة زر التنقل في الصفحة العادية.
/// </remarks>
[متصفح (صحيح) ،
DefaultValue (NULL) ،
الفئة ("زر الصورة") ،
Crafcripting ("سلسلة حجم اسم الصورة لزر التنقل في الصفحة المعطلة")]]
السلسلة العامة تعطيل buttonimagenameextension
{{
يحصل
{{
كائن OBJ = ViewState
إرجاع (OBJ == NULL)؟
}
تعيين
{{
ViewState
}
}
/// <summary>
/// حدد طريقة المحاذاة عند استخدام زر الصورة.
/// </summary>
[متصفح (صحيح) ،
وصف
DefaultValue (Imagealign.baseline) ،
الفئة ("زر الصورة")]]]
التصوير العام buttonimagealign
{{
يحصل
{{
Object obj = viewState ["buttonimagealign"] ؛
العودة (OBJ == NULL)؟
}
تعيين {viewState ["buttonimagealign"] = value ؛}
}
#endregion
#Region الترحيل
/// <summary>
/// الحصول على أو تعيين ما إذا كان لتمكين عنوان URL من تمرير معلومات ترقيم الصفحات.
/// </summary>
/// <lmarks>
/// تمكين طريقة ترحيل عنوان URL لتمرير فهرس الصفحة الذي يريد المستخدم الوصول إليه من خلال عنوان URL.
/// لذلك تتم استعادة كل بيانات إلى القيمة الأولية أو الحاجة إلى الحصول على كل ترحيل. لا يدعم طريقة ترحيل عنوان URL قيمة السمة للتغييرات الديناميكية للتحكم في الترحيل.
/// لأن قيمة السمة الجديدة غير قادرة مؤقتًا على تمرير عنوان URL إلى الصفحة التالية.
/// </remarks>
/// <exment> توضح الأمثلة التالية كيفية استخدام طريقة ترحيل URL لـ ASPNETPAGER لترويج بيانات البيانات (باستخدام قاعدة بيانات الوصول):
/// <code> <!
]
/// <٪@استيراد المساحة الاستيراد = "system.data.oledb" ٪>
/// <٪@ استيراد المساحة = "system.data" ٪>
/// <٪@ page language = "c#" debug = true ٪>
/// <html>
/// <head>
/// <title> مرحبًا بك في WebDiyer.com </itlem>
/// <script runat = "server">
/// oledbconnection conn ؛
/// OLEDBCommand CMD ؛
/// void page_load (Object SRC ، EventArgs e) {{
/// conn = new OLEDBConnection ("Provider = microsoft.jet.oledb.4.0 ؛ data source ="+server.mappath ("قبول/aspnetpager.mdb") ؛
/// if (! page.ispostback) {
/// cmd = OLEDBCOMMAND NEW ("Select Count (NewsId) من WQNews" ، conn) ؛
// conn.open () ؛
/// pager.recordCount = (int) cmd.executescalal () ؛
// conn.close () ؛
/// bindData () ؛
///}
///}
///
/// void bindData () {{)
/// cmd = new OLEDBCommand ("Select NewsId ، adding ، source ، addtime from wqnews order by addtime design ، conn) ؛ conn) ؛ conn) ؛ conn) ؛ conn) ؛ conn) ؛ conn) ؛ conn) ؛ conn) كون) ؛
/// OLEDBDATAADAPTER ADAPTER = OLEDBDATAADAPTER جديد (CMD) ؛
/// dataset ds = new dataset () ؛
/// adapter.fill (ds ، pager.pagesize*(pager.currentPageIndex-) ، pager.pagesize ، "news") ؛
/// dg.datasource = ds.tables ["news"] ؛
/// dg.databind () ؛
///}
///
/// void changepage (Object SRC ، pagechangedeventargs e) {{
/// pager.currentPageIndex = E.NewPageIndex ؛
/// bindData () ؛
///}
///
/// </script>
/// <meta http-equiv = "content-language" content = "zh-cn">
/// <meta http-equiv = "content-type" content = "text/html ؛ charset = gb2312">
/// <meta name = "general" content = "editPlus">
]
/// </head>
/// <body>
/// <form runat = "server" id = "form1">
/// <h2 align = "center"> aspnetpager paging مثال </h2>
/// <asp: dataGrid id = "dg" runat = "server"
/// cellpadding = "4" align = "center"/>
///
/// <webdiyer: aspnetpager runat = "server" id = "pager"
/// onpagechanged = "changepage"
/// أفقي = "المركز"
///
/// pagesize = "8"
/// showinputbox = "دائما"
/// submitbuttonstyle = "الحدود: 1px Solid #000066 ؛ الارتفاع: 20px ؛ العرض: 30px"
/// inputboxstyle = "الحدود: 1PX #0000FF Solid ؛ Text-Align: Center"
/// submitbuttontext = "Turn to"
/// urlpaging = "true"
/// urlpageIndexName = "pageIndex"/>
/// </form>
/// </body>
/// </html>
///]]> </code>
/// </example>
[متصفح (صحيح) ،
الفئة ("الترحيل") ،
DefaultValue (خطأ) ،
Discripting ("سواء كنت تستخدم عنوان URL لتمرير معلومات ترقيم الصفحات إلى الصفحات")]]
urlpaging bool urlpaging
{{
يحصل
{{
إرجاع urlpaging.
}
تعيين
{{
urlpaging = القيمة ؛
}
}
/// <summary>
/// الحصول عليها أو تعيينها عند تمكين طريقة ترحيل عنوان URL ، ويتم إرسال اسم معلمة فهرس الصفحة في عنوان URL في عنوان URL.
/// </summary>
/// <lmarks>
/// تتيح لك هذه السمة تخصيص اسم معلمة فهرس الصفحة لتمرير فهرس صفحة نقل عنوان URL لتجنب التكرار باستخدام اسم المعلمة الحالي.
] /ASPNETPAGER/SANDS/DATAGRID_URL.ASPX؟
] </p>
/// </remarks>
[متصفح (صحيح) ،
DefaultValue ("صفحة") ،
الفئة ("الترحيل") ،
جُحِب ("عندما يتم تمكين طريقة ترحيل عنوان URL ، اسم معلمة فهرس الصفحة للإشارة في عنوان URL")]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
السلسلة العامة urlPageIndExName
{{
احصل على {return urlPageIndexName ؛}
تعيين {urlPageIndExName = value ؛}
}
/// <summary>
/// الحصول على أو تعيين فهرس صفحة العرض الحالية.
/// </summary>
. يتم استخدام هذه السمة أيضًا للتحكم في الصفحة المعروضة عن طريق البرمجة.
] </p> </mouns>
[Readonly (صحيح) ،
متصفح (خطأ) ،
Discripting ("فهرس صفحة العرض الحالية") ،
الفئة ("الترحيل") ،
DefaultValue (1) ،
مصممي (DesignerserializationVibility.hidden)]
العام int currentpageindex
{{
يحصل
{{
كائن cpage = viewState ["CurrentPageIndex"] ؛
int pindex = (CPAGE == NULL)؟
if (pindex> pagecount && pagecount> 0)
إرجاع pagecount.
آخر إذا (pindex <1)
العودة 1 ؛
إرجاع pindex.
}
تعيين
{{
int ccpage = القيمة ؛
إذا (CPAGE <1)
CPAGE = 1 ؛
آخر إذا (cpage> this.pageCount)
cPage = this.pageCount ؛
ViewState ["CurrentPageIndex"] = CPAGE ؛
}
}
/// <summary>
/// الحصول على أو تعيين العدد الإجمالي لجميع السجلات التي تحتاج إلى وضع.
/// </summary>
/// <lmarks>
/// عندما يتم تحميل الصفحة لأول مرة ، يجب إعطاء السمة لجميع العدد الإجمالي لسجلات الترحيل في جدول البيانات الذي تم إرجاعه من إجراء التخزين أو عبارة SQL. في الصفحة الموجودة على الصفحة ، يتم الحصول على القيمة من ViewState عند العودة ، لذلك يتجنب الوصول إلى قاعدة البيانات في كل مرة يتم فيها تجنب ترقيم الصفحات. يقوم ASPNETPAGER بحساب إجمالي عدد الصفحات المطلوبة من قبل جميع البيانات بناءً على إجمالي عدد البيانات الواجب تربيتها و <SE CREF = "Pagesize"/> سمات الترحيل ، أي قيمة <see cref = "pagecount" />.
/// </remarks>
/// <eample>
/// يوضح المثال أدناه كيف يتم تعيين إجمالي عدد السجلات التي يتم إرجاعها من عبارة SQL إلى السمة:
/// <p>
/// <code> <!
/// <html>
/// <head>
/// <title> مرحبًا بك في WebDiyer.com </itlem>
/// <script runat = "server">
/// sqlconnection conn ؛
/// sqlcommand cmd ؛
/// void page_load (كائن SRC ، EventArgs E)
/// {
// conn = new SQLConnection (configurationsettings.appsettings ["connstr"] ؛
/// if (! page.ispostback)
/// {
/// cmd = new SQLCommand ("Select Count (id) from News" ، conn) ؛
// conn.open () ؛
/// pager.recordCount = (int) cmd.executescalal () ؛
// conn.close () ؛
/// bindData () ؛
///}
///}
///
/// void bindData ()
/// {
/// cmd = new SqlCommand ("getPagedNews" ، conn) ؛
/// cmd.CommandType = commandtype.storedprocedure ؛
/// cmd.parameters.add ("posgeindex" ، pager.currentPageIndex) ؛
/// cmd.parameters.add ("pagesize" ، pager.pagesize) ؛
// conn.open () ؛
/// datagrid1.datasource = cmd.executereader () ؛
/// datagrid1.databind () ؛
// conn.close () ؛
///}
/// void changepage (Object SRC ، PagechangedeventArgs e)
/// {
/// pager.currentPageIndex = E.NewPageIndex ؛
/// bindData () ؛
///}
/// </script>
/// <meta http-equiv = "content-language" content = "zh-cn">
/// <meta http-equiv = "content-type" content = "text/html ؛ charset = gb2312">
/// <meta name = "general" content = "editPlus">
]
/// </head>
/// <body>
/// <form runat = "server" id = "form1">
/// <asp: dataGrid id = "dataGrid1" runat = "server"/>
///
/// <webdiyer: aspnetpager id = "pager" runat = "server"
/// pagesize = "8"
/// numericbuttoncount = "8"
/// showcustominfosection = "قبل"
/// showinputbox = "دائما"
/// cssclass = "mypager"
/// أفقي = "المركز"
/// onpagechanged = "changepage"/>
///
/// </form>
/// </body>
/// </html>
///]]>
/// </code> </p>
/// <p> رمز إجراء التخزين المستخدم في هذا المثال كما يلي: </p>
/// <code> <!
/// إنشاء إجراء getPagedNews
/// (pagesize int ،
pageIndex int)
/// مثل
/// تعيين nocount على
/// DECRAYEREVENTABLE
/// DECLARE PAGELOWERBOUND int
/// DECRIARE PAGEUPPERBOUND int
/// setpageLowerBound = (pageIndex-)*@pagesize
/// set @[البريد الإلكتروني المحمي] [البريد الإلكتروني المحمي]
/// تعيين rowcountpageupperbound
/// insert في indextable (NID) حدد معرف من ترتيب الأخبار عن طريق addtime desc
/// حدد O.ID ، O.Title ، O.Source ، O.AddTime من الأخبار
/// and t.id>@pagelowerbound and t.id<[email protected] order by t.id
/// set nocount off
/// يذهب
/// ]]>
/// </code>
/// </example>
[browsable(false),
description("要分页的所有记录的总数,该值须在程序运行时设置,默认值为225是为设计时支持而设置的参照值。"),
category("data"),
defaultvalue(225)]
public int recordcount
{{
يحصل
{{
object obj=viewstate["recordcount"];
return (obj==null)?0:(int)obj;
}
set{viewstate["recordcount"]=value;}
}
/// <summary>
/// 获取当前页之后未显示的页的总数。
/// </summary>
[browsable(false),
designerserializationvisibility(designerserializationvisibility.hidden)]
public int pagesremain
{{
يحصل
{{
return pagecount-currentpageindex;
}
}
/// <summary>
/// 获取或设置每页显示的项数。
/// </summary>
/// <remarks>
/// 该值获取或设置数据呈现控件每次要显示数据表中的的数据的项数,aspnetpager根据该值和<see cref="recordcount"/> 来计算显示所有数据需要的总页数,即<see cref="pagecount"/>的值。</remarks>
/// <example>以下示例将<see cref="aspnetpager"/> 设置为允许每页显示8条数据:
/// <code>
/// <![cdata[
/// ...
/// <webdiyer:aspnetpager id="pager" runat="server" pagesize=8 onpagechanged="changepage"/>
/// ...
/// ]]></code></example>
[browsable(true),
description("每页显示的记录数"),
category("分页"),
defaultvalue(10)]
public int pagesize
{{
يحصل
{{
object obj=viewstate["pagesize"];
return (obj==null)?10:(int)obj;
}
تعيين
{{
viewstate["pagesize"]=value;
}
}
/// <summary>
/// 获取在当前页之后还未显示的剩余记录的项数。
/// </summary>
[browsable(false),
designerserializationvisibility(designerserializationvisibility.hidden)]
public int recordsremain
{{
يحصل
{{
if(currentpageindex<pagecount)
return recordcount-(currentpageindex*pagesize);
return 0;}
}
/// <summary>
/// 获取所有要分页的记录需要的总页数。
/// </summary>
[browsable(false),
designerserializationvisibility(designerserializationvisibility.hidden)]
public int pagecount
{{
get{return (int)math.ceiling((double)recordcount/(double)pagesize);}
}
#endregion
#region textbox and submit button
/// <summary>
/// 获取或设置页索引文本框的显示方式。
/// </summary>
/// <remarks>
/// 页索引文件框允许用户手式输入要访问的页的索引,当页数非常多时,显示页索引文本框非常方便用户跳转到指定的页,默认情况下,该文本框只有在总页数大于或等于<see cref="showboxthreshold"/> 的值时才显示,否则不显示,要想该文本框任何时候都显示,请将其值设为always,若希望任何时候都不显示,则应设为never。
///</remarks>
[browsable(true),
وصف
category("文本框及提交按钮"),
defaultvalue(showinputbox.auto)]
public showinputbox showinputbox
{{
يحصل
{{
object obj=viewstate["showinputbox"];
return (obj==null)?showinputbox.auto:(showinputbox)obj;
}
set{viewstate["showinputbox"]=value;}
}
/// <summary>
/// 获取或设置应用于页索引输入文本框的css类名。
/// </summary>
[browsable(true),
category("文本框及提交按钮"),
defaultvalue(null),
description("应用于页索引输入文本框的css类名")]
public string inputboxclass
{{
يحصل
{{
return (string)viewstate["inputboxclass"];
}
تعيين
{{
if(value.trim().length>0)
viewstate["inputboxclass"]=value;
}
}
/// <summary>
/// 获取或设置页索引输入文本框的css样式文本。
/// </summary>
[browsable(true),
category("文本框及提交按钮"),
defaultvalue(null),
description("应用于页索引输入文本框的css样式文本")]
public string inputboxstyle
{{
يحصل
{{
return (string)viewstate["inputboxstyle"];
}
تعيين
{{
if(value.trim().length>0)
viewstate["inputboxstyle"]=value;
}
}
/// <summary>
/// 获取或设置页索引页索引输入文本框前的文本字符串值。
/// </summary>
[browsable(true),
category("文本框及提交按钮"),
defaultvalue(null),
description("页索引输入文本框前的文本内容字符串")]
public string textbeforeinputbox
{{
يحصل
{{
return (string)viewstate["textbeforeinputbox"];
}
تعيين
{{
viewstate["textbeforeinputbox"]=value;
}
}
/// <summary>
/// 获取或设置页索引文本输入框后的文本内容字符串值。
/// </summary>
[browsable(true),
defaultvalue(null),
category("文本框及提交按钮"),
description("页索引输入文本框后的文本内容字符串")]
public string textafterinputbox
{{
يحصل
{{
return (string)viewstate["textafterinputbox"];
}
تعيين
{{
viewstate["textafterinputbox"]=value;
}
}
/// <summary>
/// 获取或设置提交按钮上的文本。
/// </summary>
[browsable(true),
category("文本框及提交按钮"),
defaultvalue("go"),
description("提交按钮上的文本")]
public string submitbuttontext
{{
يحصل
{{
object obj=viewstate["submitbuttontext"];
return (obj==null)?"go":(string)obj;
}
تعيين
{{
if(value.trim().length>0)
viewstate["submitbuttontext"]=value;
}
}
/// <summary>
/// 获取或设置应用于提交按钮的css类名。
/// </summary>
[browsable(true),
category("文本框及提交按钮"),
defaultvalue(null),
وصف
public string submitbuttonclass
{{
يحصل
{{
return (string)viewstate["submitbuttonclass"];
}
تعيين
{{
viewstate["submitbuttonclass"]=value;
}
}
/// <summary>
/// 获取或设置应用于提交按钮的css样式。
/// </summary>
[browsable(true),
category("文本框及提交按钮"),
defaultvalue(null),
description("应用于提交按钮的css样式")]
public string submitbuttonstyle
{{
يحصل
{{
return (string)viewstate["submitbuttonstyle"];
}
تعيين
{{
viewstate["submitbuttonstyle"]=value;
}
}
/// <summary>
/// 获取或设置自动显示页索引输入文本框的最低起始页数。
/// </summary>
/// <remarks>
/// 当<see cref="showinputbox"/> 设为auto(默认)并且要分页的数据的总页数达到该值时会自动显示页索引输入文本框,默认值为30。该选项当<see cref="showinputbox"/> 设为never或always时没有任何作用。
/// </remarks>
[browsable(true),
description("指定当showinputbox设为showinputbox.auto时,当总页数达到多少时才显示页索引输入文本框"),
category("文本框及提交按钮"),
defaultvalue(30)]
public int showboxthreshold
{{
يحصل
{{
object obj=viewstate["showboxthreshold"];
return (obj==null)?30:(int)obj;
}
set{viewstate["showboxthreshold"]=value;}
}
#endregion
#region custominfosection
/// <summary>
/// 获取或设置显示用户自定义信息区的方式。
/// </summary>
/// <remarks>
/// 该属性值设为left或right时会在分页导航元素左边或右边划出一个专门的区域来显示有关用户自定义信息,设为never时不显示。
/// </remarks>
[browsable(true),
description("显示当前页和总页数信息,默认值为不显示,值为showcustominfosection.left时将显示在页索引前,为showcustominfosection.right时将显示在页索引后"),
defaultvalue(showcustominfosection.never),
category("自定义信息区")]
public showcustominfosection showcustominfosection
{{
يحصل
{{
object obj=viewstate["showcustominfosection"];
return (obj==null)?showcustominfosection.never:(showcustominfosection)obj;
}
set{viewstate["showcustominfosection"]=value;}
}
/// <summary>
/// 获取或设置用户自定义信息区文本的对齐方式。
/// </summary>
[browsable(true),
category("自定义信息区"),
defaultvalue(horizontalalign.left),
description("用户自定义信息区文本的对齐方式")]
public horizontalalign custominfotextalign
{{
يحصل
{{
object obj=viewstate["custominfotextalign"];
return (obj==null)?horizontalalign.left:(horizontalalign)obj;
}
تعيين
{{
viewstate["custominfotextalign"]=value;
}
}
/// <summary>
/// 获取或设置用户自定义信息区的宽度。
/// </summary>
[browsable(true),
category("自定义信息区"),
defaultvalue(typeof(unit),"40%"),
description("用户自定义信息区的宽度")]
public unit custominfosectionwidth
{{
يحصل
{{
object obj=viewstate["custominfosectionwidth"];
return (obj==null)?unit.percentage(40):(unit)obj;
}
تعيين
{{
viewstate["custominfosectionwidth"]=value;
}
}
/// <summary>
/// 获取或设置应用于用户自定义信息区的级联样式表类名。
/// </summary>
[browsable(true),
category("自定义信息区"),
defaultvalue(null),
وصف
public string custominfoclass
{{
يحصل
{{
object obj=viewstate["custominfoclass"];
return (obj==null)?cssclass:(string)obj;
}
تعيين
{{
viewstate["custominfoclass"]=value;
}
}
/// <summary>
/// 获取或设置应用于用户自定义信息区的css样式文本。
/// </summary>
/// <value>字符串值,要应用于用户自定义信息区的css样式文本。</value>
[browsable(true),
category("自定义信息区"),
defaultvalue(null),
description("应用于用户自定义信息区的css样式文本")]
public string custominfostyle
{{
يحصل
{{
object obj=viewstate["custominfostyle"];
return (obj==null)?getstylestring():(string)obj;
}
تعيين
{{
viewstate["custominfostyle"]=value;
}
}
/// <summary>
/// 获取或设置在显示在用户自定义信息区的用户自定义文本。
/// </summary>
[browsable(true),
category("自定义信息区"),
defaultvalue(null),
وصف
public string custominfotext
{{
يحصل
{{
return (string)viewstate["custominfotext"];
}
تعيين
{{
viewstate["custominfotext"]=value;
}
}
#endregion
#region others
/// <summary>
/// 获取或设置一个值,该值指定是否总是显示aspnetpager分页按件,即使要分页的数据只有一页。
/// </summary>
/// <remarks>
/// 默认情况下,当要分页的数据小于两页时,aspnetpager不会在页面上显示任何内容,将此属性值设为true时,即使总页数只有一页,aspnetpager也将显示分页导航元素。
/// </remarks>
[browsable(true),
category("behavior"),
defaultvalue(false),
description("总是显示分页控件,即使要分页的数据只要一页")]
public bool alwaysshow
{{
يحصل
{{
object obj=viewstate["alwaysshow"];
return (obj==null)?false:(bool)obj;
}
تعيين
{{
viewstate["alwaysshow"]=value;
}
}
/// <summary>
/// 获取或设置由aspnetpager 服务器控件在客户端呈现的级联样式表(css) 类。
/// </summary>
[browsable(true),
description("应用于控件的css类名"),
category("appearance"),
defaultvalue(null)]
public override string cssclass
{{
get{return base.cssclass;}
تعيين
{{
base.cssclass=value;
cssclassname=value;
}
}
/// <summary>
/// 获取或设置一个值,该值指示aspnetpager 服务器控件是否向发出请求的客户端保持自己的视图状态,该属性经重写后不允许设为false。
/// </summary>
/// <remarks><see cref="aspnetpager"/> 服务器控件将一些重要的分页信息保存在viewstate中,当使用url分页方式时,虽然视图状态在分页过程中没有任何作用,但若当前页需要回发,则必须启用视图状态以便分页控件能在页面回发后获取回发前的分页状态;当通过页面回发(postback)的方式来分页时,要使aspnetpager正常工作,必须启用视图状态。
/// <p><note>该属性并不能禁止用户用<![cdata[<%@page enableviewstate=false%> ]]>页指令来禁用整个页面的视图状态,当使用此指令并且设置aspnetpager通过页面回发来分页时,aspnetpager因为无法获取保存的信息而不能正常工作。</note></p></remarks>
[browsable(false),
description("是否启用控件的视图状态,该属性的值必须为true,不允许用户设置。"),
defaultvalue(true),
category("behavior")]
public override bool enableviewstate
{{
يحصل
{{
return base.enableviewstate;
}
تعيين
{{
base.enableviewstate=true;
}
}
/// <summary>
/// 获取或设置当用户输入的页索引超出范围(大于最大页索引或小于最小页索引)时在客户端显示的错误信息。
/// </summary>
[browsable(true),
description("当用户输入的页索引超出范围(大于最大页索引或小于最小页索引)时在客户端显示的错误信息。"),
defaultvalue("页数超出范围!"),
category("data")]
public string pageindexoutofrangeerrorstring
{{
يحصل
{{
object obj=viewstate["pageindexoutofrangeerrorstring"];
return (obj==null)?"页数超出范围!":(string)obj;
}
تعيين
{
viewstate["pageindexoutofrangeerrorstring"]=value;
}
}
/// <summary>
/// 获取或设置当用户输入无效的页索引(负值或非数字)时在客户端显示的错误信息。
/// </summary>
[browsable(true),
description("当用户输入无效的页索引(负值或非数字)时在客户端显示的错误信息。"),
defaultvalue("页索引无效!"),
category("data")]
public string invalidpageindexerrorstring
{
يحصل
{
object obj=viewstate["invalidpageindexerrorstring"];
return (obj==null)?"页索引无效!":(string)obj;
}
تعيين
{
viewstate["invalidpageindexerrorstring"]=value;
}
}
#endregion
#endregion
#region control rendering logic
/// <summary>
/// 重写<see cref="system.web.ui.control.onload"/> 方法。
/// </summary>
/// <param name="e">包含事件数据的<see cref="eventargs"/> 对象。</param>
protected override void onload(eventargs e)
{
if(urlpaging)
{
currenturl=page.request.path;
urlparams=page.request.querystring;
string pageindex=page.request.querystring[urlpageindexname];
int index=1;
يحاول
{
index=int.parse(pageindex);
}
يمسك {}
onpagechanged(new pagechangedeventargs(index));
}
آخر
{
inputpageindex=page.request.form[this.uniqueid+"_input"];
}
base.onload(e);
}
/// <summary>
/// 重写<see cref="system.web.ui.control.onprerender"/>方法。
/// </summary>
/// <param name="e">包含事件数据的<see cref="eventargs"/> 对象。</param>
protected override void onprerender(eventargs e)
{
if(pagecount>1)
{
string checkscript="<script language="javascript">function docheck(el){var r=new regexp("^s*(d+)s*$");if(r.test(el.value)){if(regexp.$1<1||regexp.$1>"+pagecount.tostring()+"){alert(""+pageindexoutofrangeerrorstring+"");document.all['"+this.uniqueid+"_input'].select();return false;}return true;}alert(""+invalidpageindexerrorstring+"");document.all['"+this.uniqueid+"_input'].select();return false;}</script>";
if((showinputbox==showinputbox.always)||(showinputbox==showinputbox.auto&&pagecount>=showboxthreshold))
{
if(!page.isclientscriptblockregistered("checkinput"))
page.registerclientscriptblock("checkinput",checkscript);
string script="<script language="javascript" > <!-- nfunction buildurlstring(key,value){ var _key=key.tolowercase(); var prms=location.search; if(prms.length==0) return location.pathname+"?"+_key+"="+value; var params=prms.substring(1).split("&"); var newparam=""; var found=false; for(i=0;i<params.length;i++){ if(params[i].split("=")[0].tolowercase()==_key){ params[i]=_key+"="+value; found=true; break; } } if(found) return location.pathname+"?"+params.join("&"); else return location+"&"+_key+"="+value; }n//--> </script>";
if(!page.isclientscriptblockregistered("buildurlscript"))
page.registerclientscriptblock("buildurlscript",script);
}
}
base.onprerender(e);
}
/// <summary>
/// Rewrite the <see Cref = "System.web.ui.webControls.webControl.addattributestorender" method. Add the html attributes and styles that need to be presented to the specified <see Cref = "SYSTEM.WEB.HTMLTEXTEXT writer " />
/// </summary>
/// <param name="writer"></param>
protected override void addattributestorender(htmltextwriter writer)
{
if(this.page!=null)
this.page.verifyrenderinginserverform(this);
base.addattributestorender(writer);
}
/// <summary>
///重写<see cref="system.web.ui.webcontrols.webcontrol.renderbegintag"/> 方法,将<see cref="aspnetpager"/> 控件的html 开始标记输出到指定的<see cref="system.web.ui.htmltextwriter"/> 编写器中。
/// </summary>
///<param name="writer"><see cref="system.web.ui.htmltextwriter"/>,表示要在客户端呈现html 内容的输出流。</param>
public override void renderbegintag(htmltextwriter writer)
{
bool showpager=(pagecount>1||(pagecount<=1&&alwaysshow));
writer.writeline();
writer.write ("<! ------------------------------------------- ------------------------------------------------- -----------")
writer.write("aspnetpager v4.3 start");
writer.writeline ("--------------------------------------------- ------------------------------------------------- ------------------------------------------------- --------------
writer.write ("<! ------------------------------------------- ------------------------------------------------- ------------------");
writer.write("copyright:2003 webdiyer(www.webdiyer.com)");
writer.write(" ---------------------");
writer.writeline(">");
base.renderbegintag(writer);
if(!showpager)
{
Writer.Write ("<! ------- because the total page is only one page, and the alwayShow attribute is set to false, the ASPNETPAGER does not show any content. If you want alwayShow attribute set to true! " ) ؛
writer.write("----->");
}
if((showcustominfosection==showcustominfosection.left||showcustominfosection==showcustominfosection.right)&&showpager)
{
writer.addattribute(htmltextwriterattribute.width,"100%");
writer.addattribute(htmltextwriterattribute.style,getstylestring());
if(height!=unit.empty)
writer.addstyleattribute(htmltextwriterstyle.height,height.tostring());
writer.addattribute(htmltextwriterattribute.border,"0");
writer.addattribute(htmltextwriterattribute.cellpadding,"0");
writer.addattribute(htmltextwriterattribute.cellspacing,"0");
writer.renderbegintag(htmltextwritertag.table);
writer.renderbegintag(htmltextwritertag.tr);
writecellattributes(writer,true);
writer.renderbegintag(htmltextwritertag.td);
}
}
/// <summary>
///重写<see cref="system.web.ui.webcontrols.webcontrol.renderendtag"/> 方法,将<see cref="aspnetpager"/> 控件的html 结束标记输出到指定的<see cref="system.web.ui.htmltextwriter"/> 编写器中。
/// </summary>
///<param name="writer"><see cref="system.web.ui.htmltextwriter"/>,表示要在客户端呈现html 内容的输出流。</param>
public override void renderendtag(htmltextwriter writer)
{
if((showcustominfosection==showcustominfosection.left||showcustominfosection==showcustominfosection.right)&&(pagecount>1||(pagecount<=1&&alwaysshow)))
{
writer.renderendtag();
writer.renderendtag();
writer.renderendtag();
}
base.renderendtag(writer);
writer.writeline();
writer.write("<!------------------------------- ");
writer.write("aspnetpager v4.3 end");
writer.write(" --------------------------------");
writer.writeline(">");
writer.writeline();
}
/// <summary>
/// Rewrite the <see Cref = "System.web.ui.webControls.webControl.RenderContents" method to present the content of the control to the specified <see cref = "System.web.ui.htmlTextWriter"/> In the جهاز.
/// </summary>
/// <param name="writer"><see cref="system.web.ui.htmltextwriter"/>,表示要在客户端呈现html 内容的输出流。</param>
protected override void rendercontents(htmltextwriter writer)
{{
if(pagecount<=1&&!alwaysshow)
يعود؛
if(showcustominfosection==showcustominfosection.left)
{
writer.write(custominfotext);
writer.renderendtag();
writecellattributes(writer,false);
writer.addattribute(htmltextwriterattribute.class,cssclass);
writer.renderbegintag(htmltextwritertag.td);
}
int midpage=(int)((currentpageindex-1)/numericbuttoncount);
int pageoffset=midpage*numericbuttoncount;
int endpage=((pageoffset+numericbuttoncount)>pagecount)?pagecount:(pageoffset+numericbuttoncount);
this.createnavigationbutton(writer,"first");
this.createnavigationbutton(writer,"prev");
if(showpageindex)
{
if(currentpageindex>numericbuttoncount)
createmorebutton(writer,pageoffset);
for(int i=pageoffset+1;i<=endpage;i++)
{
createnumericbutton(writer,i);
}
if(pagecount>numericbuttoncount&&endpage<pagecount)
createmorebutton(writer,endpage+1);
}
this.createnavigationbutton(writer,"next");
this.createnavigationbutton(writer,"last");
if((showinputbox==showinputbox.always)||(showinputbox==showinputbox.auto&&pagecount>=showboxthreshold))
{
writer.write(" ");
if(textbeforeinputbox!=null)
writer.write(textbeforeinputbox);
writer.addattribute(htmltextwriterattribute.type,"text");
writer.addstyleattribute(htmltextwriterstyle.width,"30px");
writer.addattribute(htmltextwriterattribute.value,currentpageindex.tostring());
if(inputboxstyle!=null&&inputboxstyle.trim().length>0)
writer.addattribute(htmltextwriterattribute.style,inputboxstyle);
if(inputboxclass!=null&&inputboxclass.trim().length>0)
writer.addattribute(htmltextwriterattribute.class,inputboxclass);
if(pagecount<=1&&alwaysshow)
writer.addattribute(htmltextwriterattribute.readonly,"true");
writer.addattribute(htmltextwriterattribute.name,this.uniqueid+"_input");
string scriptref="docheck(document.all['"+this.uniqueid+"_input'])";
string postref="if(event.keycode==13){if("+scriptref+")__dopostback('"+this.uniqueid+"',document.all['"+this.uniqueid+"_input'].value);else{event.returnvalue=false;}}";
string keydownscript="if(event.keycode==13){if("+scriptref+"){even
csover 发表于:2006.07.21 08:46 ::分类: ( asp.net ) ::阅读:(464次) :: 评论(0) :: 引用(0)
2006 年07 月20日, 星期四
一个简单的分页控件
采用datagrid的默任的分页方式分页,后来发现对于大的数据量速度很慢,net进程占用系统资源也很大,后来写了个分页的存储过程,每次取数据都只取当前页的,分页是分好了,但是发现翻页就没那么方便了,于是自己写了个简单的分页控件,代码如下(编译以后直接形成dll就可以用)。
sample code:
باستخدام النظام ؛
باستخدام system.web.ui ؛
باستخدام system.web.ui.webControls ؛
using system.componentmodel;
namespace pageinfocontrol
{
/// <summary>
///webcustomecontrol1的摘要说明
/// </summary>
[defaultproperty('totalrecord'),toolboxdata('<{0}:pageinfo runat=server></{0}:pageinfo>')]
public class pageinfo:system.web.ui.webcontrols.webcontrol,ipostbackeventhandler
{
#region construct method
/// <summary>
///构造函数
/// </summary>
public pageinfo():base(htmltextwritertag.div)
{
}
#endregion
#region variables and constants
public event eventhandler changepageclick;
private string _barbackgroudcolor='#f1f1f1';
private string _barlinkcolor='navy';
private string _barcurrentcolor='#eeeeee';
private int _totalrecord=0;
private int _totalpage=0;
private int _currentpageindex=1;
private int _itemsize=10;
#endregion
#region properties
[description('分页条背景色'),bindable(true),category('appearance'),defaultvalue('#f1f1f1')]
public string barbackgroundcolor
{
get{return _barbackgroundcolor;}
set{_barbackgroundcolor=value;}
}
[description('分页条带链接数字颜色'),bindable(true),category('appearance'),defaultvalue('navy')]
public string barlinkcolor
{
get{return _barlinkcolor;}
set{_barlinkcolor=value;}
}[description('分页条当前页数字颜色'),bindable(true),category('appearance'),defaultvalue('#eeeeee')]
public string barcurrentcolor
{
get{return _barcurrentcolor;}
set{_barcurrentcolor=value;}
} [description('总记录数'),bindable(false),category('behavior'),defaultvalue(0)]
public int totalrecord
{{
get{return _totalrecord;}
تعيين
{
foreach(char c in system.convert.tostring(value))
{
if(!char.isnumber(c)
{
_totalrecord=0;
استراحة؛
}
_totalrecord=value;
}
} [description('每页显示记录数'),bindable(true),category('behavior'),defaultvalue(0)]
public int pagesize
{
get{return _pagesize;}
تعيين
{
foreach(char c in system.convert.tostring(value))
{
if(!char.isnumber(c))
{
_pagesize=0;
استراحة؛
}
}
_pagesize=value;
}
}[description('总页数'),bindable(true),category('behavior'),defaultvalue(0)]
public int totalpage
{
get{return _totalpage;}
}[description('数字规格'),bindable(true),category('behavior'),defaultvalue(10)]
public int itemsize
{
get{return _itemsize;}
تعيين
{{
foreach(char c in system.convert.tostring(value))
{
if(!char.isnumber(c))
{
_itemsize=10;
استراحة؛
}
}
_itemsize=value;
}
}[description('当前页值'),bindable(true),category('behavior'),defaultvalue(1)]
public int currentpageindex
{
get{return _currentpageindex;}
set{_currentpageindex=value;}
}
#endregion
//定义div的样式
protected override void addattributestorender(htmltextwriter writer)
{
writer.addstyleattribute('white-space','nowrap');
writer.addstyleattribute('padding-top','2px');
writer.addstyleattribute('padding-bottom',2px');
writer.addstyleattribute('width',width.tostring());
writer.addstyleattribute('height',height.tostring());
base.addattributestorender(writer);
}
protected virtual void onpagechangeclick(eventargs e)
{
if(changepageclick!=null)
{
changepageclick(this,e);
}
} public void raisepostbackevent(string eventargument)
{
int pageindex=int.parse(eventargument);
this._currentpageindex=pageindex;
onpagechangeclick(new eventargs());
}
/// <summary>
///将此控件呈现给指定的输出参数
/// </summary>
///<param name='output'>要写出到的html编写器</param>
protected override void rendercontents(htmltextwriter output)
{this._totalpage=((this.totalrecord/pagesize)*this.pagesize==this.totalrecord)?(this.totalrecord/this.pagesize):((this.totalrecord/this.pagesize)+1);
int beginrecord=(this.currentpageindex-1)*this.pagesize+1;
int endrecord=this.currentpageindex*this.pagesize;
string pageinfo='[共<font color=#cc0000>'+this.totalpage.tostring()+'</font>页/当前第<font color=#cc0000>'+this.currentpageindex.tostring()+'</font>页共<font color=#cc0000>'+totalrecord.tostring()+'</font>条记录,当前记录数<font color=#cc0000>'+begingrecord.tostring()+'</font>到<font color=#cc0000>'+endrecord.tostring()+'</font>]';
string pageliststr='';
string pageindexcolor='#0000c0';
int singlenumber=this.totalpage-(totalpage/itemsize)*itemsize; //得到分页后的尾数(比如:总共58页,按10页规格显示,则尾数为8)
int intpageformax=(this.currentpageindex-1)/itemsize;
int minint=(1+itemsize*intpageformax);
int maxint=((intpageformax+1)*itemsize)>totalpage?totalpage:((intpageformax+1)*itemsize);
if(this.totalrecord==0||this.totalpage==0)
{
pageliststr='<font color='+pageindexcolor+'>0</font>';
pageliststr=pageliststr+'[共<font color=#cc0000>0</font>页/当前第<font color=#cc0000>0</font>页共<font color=#cc0000>0</font>条记录,当前记录数<font color=#cc0000>0</font>到<font color=#cc0000>0</font>]';
output.write(pageliststr);
}
آخر
{
if(this.totalpage<=this.itemsize)
{
for(int i=1;i<=totalpage;i++)
{
pageindexcolor=currentpageindex==i?'#cc0000':'#0000c0';
if(currentpageindex==i)
pageliststr=pageliststr+'<a title='当前为第['+i+']页' href='#' id=''+this.uniqueid+''><font color='+pageindexcolor+'>'+i.tostring()+'</font></a>';
آخر
pageliststr=pageliststr+'<a title='点击转到第['+i+']页' id=''+this.uniqueid+'' href=' javascript:'+page.getpostbackeventreference(this,i.tostring())+''><font color='+pageindexcolor+'>'+i.tostring()+'</font></a>';
}
pageliststr=pageliststr==''?'<font color='+pageindexcolor+'>0</font>':pageliststr;
pageliststr=pageliststr+''+pageinfo;
output.write(pageliststr);
}
آخر
{{
for(int i=minint;i<=maxint;i++)
{
pageindexcolor=currentpageindex==i?'#cc0000':'#0000c0';
if(currentpageindex==i)
pageliststr=pageliststr+'<a title='当前为第['+i+']页' href='#' id=''+this.uniqueid+''><font color='+pageindexcolor+'>'+i.tostring()+'</font></a>';
آخر
pageliststr=pageliststr+'<a title='点击转到第['+i+']页' id=''+this.uniqueid+'' href=' javascript:'+page.getpostbackeventreference(this,i.tostring())+''><font color='+pageindexcolor+'>'+i.tostring()+'</font></a>';
}
//当当前页数小于itemsize且总的页数大于itemsize时
if(currentpageindex<=itemsize && totalpage>itemsize)
{
pageliststr=pageliststr+'<a id=''+this.uniqueid+'' title='点击转到第['+system.convert.tostring(itemsize+1)+']页' href=' javascript:'+page.getpostbackeventreference(this.system.convert.tostring(itemsize+1))+''>>></a>';
//当当前页数大于itemsize,且总的页数减去当前页数大于等于尾数值页数时
if(this.currentpageindex>itemsize && (totalpage-this.currentpageindex)>=singlenumber)
{
int multiminpageindex=(intpageformax*itemsize);
int multimaxpageindex=((intpageformax+1)*itemsize)+1;
pageliststr='<a id=''+this.uniqueid+'' title='点击转到第['+multiminpageindex+']页' href=' javascrcipt:'+page.getpostbackeventreference(this.multiminpageindex.tostring())+''><<</a>'+pageliststr.trim()+'<a id=''+this.uniqueid+'' title='点击转到第['+multimaxpageindex+']页' href=' javascript:'+page.getpostbackeventreference(this.multimaxpageindex.tostring())+''>>></a>';
}
//当当前页数大于itemsize,且总的页数减去当前页数大于等于尾数值页数时
if(currentpageindex>10 && (totalpage-currentpageindex)<singlenumber)
{
int multiminpageindex=(intpageformax * itemsize);
pageliststr='<a id=''+this.uniqueid+'' title='点击转到第['+multiminpageindex+']页' href=' javascript:'+page.getpostbackeventreference(this,multiminpageindex.tostring ())+''><<</a>'+pageliststr.trim();
}
pageliststr=pageliststr==''?'<font color='+pageindexcolor+'>0</font>':pageliststr;
pageliststr=pageliststr+''+pageinfo;
output.write(pageliststr);
}
}
base.rendercontents(output);
}
}
}
控件中有几个相关的属性,在使用的时候,只需要指定:totalrecord(总记录数)、pagesize(每页的数据记录数)、currentpageindex(当前页面值)、itemsize(分页条显示页面值的规格)
控件中有个changepageclick事件,可以利用“控件id.currentpageindex”属性来获取当前页面值。
注册会员,创建你的web开发资料库,