لمواصلة الفرز بعد قلب الصفحة، قم بتحقيق هذا التأثير:
على سبيل المثال، يوجد 15 سجلاً إجمالاً، ويتم عرض 10 سجلات في كل صفحة
. عند الفرز: يتم فرز السجلات العشرة الأولى في الصفحة الأولى، والسجلات الخمسة التالية يتم فرزها بشكل منفصل عند قلب الصفحة الثانية.
انتبه إلى النقاط التالية:
1. إذا كان هناك الكثير من البيانات، فمن الأفضل عدم وضع مجموعة البيانات في ذاكرة التخزين المؤقت (حالة العرض)، مما سيؤثر على الأداء
2. يقوم ViewState بتخزين التعبير الإلكتروني الأخير وما إذا كان التعبير الإلكتروني بترتيب تصاعدي أو تنازلي،
الأمثلة هي كما يلي:
1. تتم كتابة حدث الفرز الموجود بهذه الطريقة. يتم استخدام هذا عند النقر فوق عنوان الفرز أعلاه:
الفراغ الخاص grdProjTrace_SortCommand(مصدر الكائن، DataGridSortCommandEventArgs e)
{
this.grdProjTrace.CurrentPageIndex = 0;
DataView dv = الحصول على رمز البيانات؛
سلسلة strSort = ""؛
سلسلة strOrder = ""; // طريقة الفرز. 0، ترتيب تنازلي، 1 ترتيب تصاعدي if(ViewState["SortExpresstion"] != null)
{
strSort = ViewState["SortExpresstion"].ToString();
strSort = strSort.Substring(0,strSort.Length -1);
strOrder = ViewState["SortExpresstion"].ToString();
strOrder = strOrder.Substring(strOrder.Length -1);
}
إذا (e.SortExpression == "اسم العميل")
{
إذا (strSort! = "اسم العميل")
{
this.ViewState["SortExpresstion"] = ustomerName0";
dv.Sort = "اسم العميل DESC";
}
آخر
{
إذا (strOrder == "0")
{
this.ViewState["SortExpresstion"] = "CustomerName1";
dv.Sort = "اسم العميل ASC";
}
آخر
{
this.ViewState["SortExpresstion"] = "CustomerName0";
dv.Sort = "اسم العميل DESC";
}
}
}
إذا (e.SortExpression == "الاسم الكامل")
{
إذا (strSort!= "الاسم الكامل")
{
this.ViewState["SortExpresstion"] = "fullName0";
dv.Sort = "fullName DESC";
}
آخر
{
إذا (strOrder == "0")
{
this.ViewState["SortExpresstion"] = "fullName1";
dv.Sort = "fullName ASC";
}
آخر
{
this.ViewState["SortExpresstion"] = "fullName0";
dv.Sort = "fullName DESC";
}
}
}
this.grdProjTrace.DataSource = dv;
this.grdProjTrace.DataBind();
}
2. الطريقة التالية كتبتها بنفسي ويتم استدعاؤها في حدث قلب الصفحة.
الفراغ الخاص ChangePageDataBind ()
{
DataView dv = الحصول على رمز البيانات؛
سلسلة strSort = ""؛
سلسلة strOrder = ""; // طريقة الفرز. 0، ترتيب تنازلي، 1 ترتيب تصاعدي if(ViewState["SortExpresstion"] != null)
{
strSort = ViewState["SortExpresstion"].ToString();
strSort = strSort.Substring(0,strSort.Length -1);
strOrder = ViewState["SortExpresstion"].ToString();
strOrder = strOrder.Substring(strOrder.Length -1);
}
إذا (this.ViewState["SortExpresstion"] != null)
{
إذا (strSort == "اسم العميل")
{
إذا (strOrder == "1")
{
this.ViewState["SortExpresstion"] = "CustomerName1";
dv.Sort = "اسم العميل ASC";
}
آخر
{
this.ViewState["SortExpresstion"] = "CustomerName0";
dv.Sort = "اسم العميل DESC";
}
}
}
إذا (this.ViewState["SortExpresstion"] != null)
{
إذا (strSort == "الاسم الكامل")
{
إذا (strOrder == "1")
{
this.ViewState["SortExpresstion"] = "fullName1";
dv.Sort = "fullName ASC";
}
آخر
{
this.ViewState["SortExpresstion"] = "fullName0";
dv.Sort = "fullName DESC";
}
}
}
this.grdProjTrace.DataSource = dv;
this.grdProjTrace.DataBind();
}
يمكن استدعاء الطريقتين المذكورتين أعلاه مباشرة بشرط تعديل اسم الحقل المراد فرزه
1. الطريقة بسيطة وعملية للغاية، لذا لن أخوض فيها هنا.
2. يتم استخدام الطريقة على النحو التالي:
grdProjTrace_PageIndexChanged (مصدر الكائن، DataGridPageChangedEventArgs e) باطلة خاصة
{
يحاول
{
يحاول
{
this.grdProjTrace.CurrentPageIndex = e.NewPageIndex;
}
يمسك
{
this.grdProjTrace.CurrentPageIndex = 0;
}
this.ChangePageDataBind();
}
قبض على (System.Exception يخطئ)
{
//غير طبيعي}
}