مرتب سازی اطلاعات در کنترل GridView
مقدمه :
همانطور که در بخش قبل نشان داديم ، کنترل GridView اطلاعات دريافتی از منبع داده ای
را به صورت جدول نمايش می دهد ، که در آن هر سطر اطلاعات يک رکورد و هر ستون اطلاعات
مربوط به يک فيلد ( Field ) داده ای را شامل می شود . يکی از مسائلی که در کار با داده
های جدول وار با آن روبرو هستيم ، نياز به مرتب سازی اطلاعات جدول بر حسب مقادير يک
ستون خاص است . مثلا در جدول Students که در زير آن را نمايش داده ايم ، اطلاعات مربوط
به جدول Students پايگاه داده دانشگاه ( UniverCity ) قرار دارد . ممکن است در اين
جدول بخواهيم اطلاعات دانشجويان را بر حسب نام خواندگی ( فيلد Family ) و يا نمرات
آنها ( فيلد Grade ) مرتب کنيم . در اين حالت است که می توانيم از قابليت مرتب سازی
داده در کنترل GridView استفاده کنيم .
کنترل GridView به ما امکان می دهد ، تا بتوانيم رکوردهای جدول آن را بر حسب مقادير
يک ستون آن مرتب کنيم . اين کنترل دارای مکانيزم درون ساخته اي است که بدون نياز به
کد نويسی خاصی ، عمليات مرتب سازی داده را انجام می دهد .
نکته مهم : بايد توجه داشته باشيد که کنترل GridView زمانی می تواند
تاطلاعات جدول خود را بر حسب مقادير يک ستون آن مرتبط کند که کنترل سرور داده متصل
به آن ، خود فابليت مرتب سازی داده را داشته باشد . در واقع کنترل GridView امکان مرتب
سازی داده را از کنترل سرور داده خود می گيرد . کنترل های SqlDataSource , AccessDataSource
و ObjectDataSource از فابليت مرتب سازی داده پشتيبانی می کنند ، اما کنترل XmlDataSource
دارای اين قابليت نيست .
|
1
|
Mohsen
|
Amiri
|
SoftWare
|
19
|
|
2
|
Ali
|
Rostami
|
SoftWare
|
12
|
|
3
|
Maryam
|
Soltani
|
HardWare
|
16
|
|
4
|
Sohrab
|
Kashani
|
HardWare
|
14
|
|
5
|
Behnam
|
Mosavi
|
SoftWare
|
13
|
نحوه فعال سازی قابليت مرتب سازی داده در کنترل GridView :
به طور کلی 2 روش برای فعال سازی قابليت مرتب سازی داده در کنترل GridView وجود دارد
:
- فعال سازی قابليت مرتب سازی با کدنويسی در محيط کد برنامه
- قعال سازی قابليت مرتب سازی با استفاده از محيط طراحی ( Design ) در نرم افزار Visual
Stuido 2005 :
1 ) نحوه فعال سازی قابليت مرتب سازی داده در کنترل GridView :
برای فعال سازی قابلت مرتب سازی کنترل GridView در بخش کدنویسی برنامه ، بايد مقدار
خاصيت AllowSorting کنترل GridView را برابر با مقدار True تنظيم کنيد . در اين صورت
، کنترل هدر ( عنوان بالای هر ستوان ( را به صورت لينک در می آورد ، که در صورت کليک
بر روی آن اطلاعات آن ستون جدول بر حسب حروف الفبا و يا کوچک و بزرگ بودن مرتب خواهد
شد . همچنين چنانچه دوباره بر روی همان لينک کليک کنيد ، فرآيند مرتب سازی در آن ستون
بر عکس خواهد شد . یعنی اگر در بار اول بر حسب حروف A تا Z مرتب شده باشند ، در بار
دوم بر حسب Z تا A مرتب خواهند شد .
نکته : توجه داشته باشيد که در هر لحظه می توان اطلاعات جدول را فقط
بر حسب مقدار يک ستون مرتب کرد .
در هنگامی که شما بر روی لينک هر هدر ستون کليک می کنيد ، کنترل صفحه را در اصطلاح
Postback * کرده و جدول را Refresh می کند . با Refresh شدن
جدول ، اطلاعات آن بر حسب ستون مورد تظر مرتب خواهد شد .
Postback : اصطلاح Postback شدن صفحه در برنامه
های ASP.NET اين است ، که صفحه به سرور ASP.NET خود ارسال شده و تغييرات داده ای را
دريافت می کند . معمولا کنترل های داده در هنگام انجام عمليات های ويرايش ، مرتب سازی
، صفحه بندی ، وارد کردن اطلاعات جديد و ... صفحه را Postback می کنند . توجه داشته
باشيد که Postback شدن صفحه به معنای Refresh شدن صفحه نيست .
نکته کاربردی ! : هنگامی که کنترلی به هر دليل صفحه را Postback می
کند ، کنترل صفحه بعد از انجام آن به بالای صفحه می پرد . اين کار چند ايراد دارد .
چنانچه محل انجام عمليات کاربر در جایی پايين صفحه باشد اول اينکه محل کار خود را در
صفحه گم می کند و بايد دوباره آن را پيدا کند و دوم اينکه مجبوريم از بالای صفحه به
پايين صفحه عمل پيمايش را انجام دهيم . برای جلوگيری از انجام اين مسئله در هنگام Postback
شدن صفحه ، بايد مقدار خاصيت MaintainScrollPositionOnPostback
را که در هدر صفحه قرار دارد را برابر مقدار True تنظيم کنيم . در اين حالت در هنگام
Postback شدن صفحه ، کنترل آن در همان مکان باقی می ماند و به بالای صفحه پرش نمی کند
. مثال زير نحوه استفاده از اين خاصيت را در محل مربوط به آن در صفحه نشان می دهد :
|
< %@ page language="C#" codefile="SamplePage.aspx.cs"
inherits="ASP_NET_GridView_Sorting" title="SamplePage" maintainscrollpositiononpostback="true"
%>
|
مثال : در مثال يک کنترل GridView را به يک کنترل AccessDataSource
که اطلاعات جدول Students ( که خود جدول را در بالای صفحه مشاهده می کنيد ) در پايگاه
داده دانشگاه را دريافت می دهد ، متصل کرده ايم . همچنين قابليت مرتب سازی داده را
در آن با تنظيم مقدار خاصيت AlloeSorting آن فعال کرده ايم . کنترل GridView را در
خروجی مثال مشاهده می کنيد ، می توانيد برای انجام عمليات مرتب سازی داده ای آن بر
روی هدر ستون های آن کليک کنيد :
< asp:AccessDataSource ID="AccessData1" runat="server"
DataFile="~/App_Data/UniverCity.mdb" SelectCommand="Select * From Students"
>
</asp:AccessDataSource>
< asp:GridView ID="Gridview1" runat="server"
DataSourceID="AccessData1" AllowSorting="True" GridLines="Both"
>
< /asp:GridView >
|
| ID | Name | Family | Major | Grade |
| 1 | Mohsen | Amiri | SoftWare | 19 |
| 2 | Ali | Rostami | SoftWare | 12 |
| 3 | Maryam | Soltani | HardWare | 16 |
| 4 | Sohrab | Kashani | HardWare | 14 |
| 5 | Behnam | Mosavi | SoftWare | 13 |
|
قعال سازی قابليت مرتب سازی با استفاده از محيط طراحی ( Design ) در نرم
افزار Visual Stuido 2005 : شما یم توانيد بدون کدنويسی و با استفاده از
محيط طراحی ( Design ) نرم افزار Visual Studio 2005 ، قابليت مرتب سازی کنترل GridView
را فعال کنيد . در اين حالت پس از انجام عمليات لازم ، برنامه به طور خودکار کدهای
لازم را در محيط کدنويسی توليد خواهد کرد . به عبارت ديگر مقدار خاصيت AllowSorting
کنترل را به True تنظيم می کنيد . برای استفاده از اين روش مراحل زير را انجام دهيد
:
- صفحه ASP.NET مورد نظر خود را در نرم افزار Visual Studio باز کرده و آن را به نماي
طراحی ( Design ) سوئیچ کنيد .
- سپس يک کنترل GridView و يک کنترل سرور داده که می خواهيد کنترل GridView به آن متصل
شود را بر روی صفحه قرار داده و ارتباط لازم با پايگاه داده را برای آن ايجاد کنيد
.
- کنترل GridView را از روی صفحه انتخاب کرده و بر روی آن کليک سمت راست نموده و از منوی
باز شده علامت گزينه AllowSorting را قعال کنيد .
اکنون خاصيت مرتب سازی داده در کنترل GridView شما فعال شده است و می توانيد از آن
استفاده کنيد . خروجی و عملکرد همانند مثال بالا خواهد بود .