مرتب سازی اطلاعات در کنترل GridView

مقدمه :

همانطور که در بخش قبل نشان داديم ، کنترل GridView اطلاعات دريافتی از منبع داده ای را به صورت جدول نمايش می دهد ، که در آن هر سطر اطلاعات يک رکورد و هر ستون اطلاعات مربوط به يک فيلد ( Field ) داده ای را شامل می شود . يکی از مسائلی که در کار با داده های جدول وار با آن روبرو هستيم ، نياز به مرتب سازی اطلاعات جدول بر حسب مقادير يک ستون خاص است . مثلا در جدول Students که در زير آن را نمايش داده ايم ، اطلاعات مربوط به جدول Students پايگاه داده دانشگاه ( UniverCity ) قرار دارد . ممکن است در اين جدول بخواهيم اطلاعات دانشجويان را بر حسب نام خواندگی ( فيلد Family ) و يا نمرات آنها ( فيلد Grade ) مرتب کنيم . در اين حالت است که می توانيم از قابليت مرتب سازی داده در کنترل GridView استفاده کنيم .
کنترل GridView به ما امکان می دهد ، تا بتوانيم رکوردهای جدول آن را بر حسب مقادير يک ستون آن مرتب کنيم . اين کنترل دارای مکانيزم درون ساخته اي است که بدون نياز به کد نويسی خاصی ، عمليات مرتب سازی داده را انجام می دهد .
نکته مهم : بايد توجه داشته باشيد که کنترل GridView زمانی می تواند تاطلاعات جدول خود را بر حسب مقادير يک ستون آن مرتبط کند که کنترل سرور داده متصل به آن ، خود فابليت مرتب سازی داده را داشته باشد . در واقع کنترل GridView امکان مرتب سازی داده را از کنترل سرور داده خود می گيرد . کنترل های SqlDataSource , AccessDataSource و ObjectDataSource از فابليت مرتب سازی داده پشتيبانی می کنند ، اما کنترل XmlDataSource دارای اين قابليت نيست .

Student Table
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

نحوه فعال سازی قابليت مرتب سازی داده در کنترل GridView :

به طور کلی 2 روش برای فعال سازی قابليت مرتب سازی داده در کنترل GridView وجود دارد :

  1. فعال سازی قابليت مرتب سازی با کدنويسی در محيط کد برنامه
  2. قعال سازی قابليت مرتب سازی با استفاده از محيط طراحی ( 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 شدن صفحه ، کنترل آن در همان مکان باقی می ماند و به بالای صفحه پرش نمی کند . مثال زير نحوه استفاده از اين خاصيت را در محل مربوط به آن در صفحه نشان می دهد :

Example
< %@ page   language="C#"   codefile="SamplePage.aspx.cs"   inherits="ASP_NET_GridView_Sorting"   title="SamplePage"   maintainscrollpositiononpostback="true" %> کد

مثال : در مثال يک کنترل GridView را به يک کنترل AccessDataSource که اطلاعات جدول Students ( که خود جدول را در بالای صفحه مشاهده می کنيد ) در پايگاه داده دانشگاه را دريافت می دهد ، متصل کرده ايم . همچنين قابليت مرتب سازی داده را در آن با تنظيم مقدار خاصيت AlloeSorting آن فعال کرده ايم . کنترل GridView را در خروجی مثال مشاهده می کنيد ، می توانيد برای انجام عمليات مرتب سازی داده ای آن بر روی هدر ستون های آن کليک کنيد :

Example
< 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 >
کد
IDNameFamilyMajorGrade
1MohsenAmiriSoftWare19
2AliRostamiSoftWare12
3MaryamSoltaniHardWare16
4SohrabKashaniHardWare14
5BehnamMosaviSoftWare13
خروجی

قعال سازی قابليت مرتب سازی با استفاده از محيط طراحی ( Design ) در نرم افزار Visual Stuido 2005 : شما یم توانيد بدون کدنويسی و با استفاده از محيط طراحی ( Design ) نرم افزار Visual Studio 2005 ، قابليت مرتب سازی کنترل GridView را فعال کنيد . در اين حالت پس از انجام عمليات لازم ، برنامه به طور خودکار کدهای لازم را در محيط کدنويسی توليد خواهد کرد . به عبارت ديگر مقدار خاصيت AllowSorting کنترل را به True تنظيم می کنيد . برای استفاده از اين روش مراحل زير را انجام دهيد :

  1. صفحه ASP.NET مورد نظر خود را در نرم افزار Visual Studio باز کرده و آن را به نماي طراحی ( Design ) سوئیچ کنيد .
  2. سپس يک کنترل GridView و يک کنترل سرور داده که می خواهيد کنترل GridView به آن متصل شود را بر روی صفحه قرار داده و ارتباط لازم با پايگاه داده را برای آن ايجاد کنيد .
  3. کنترل GridView را از روی صفحه انتخاب کرده و بر روی آن کليک سمت راست نموده و از منوی باز شده علامت گزينه AllowSorting را قعال کنيد .

اکنون خاصيت مرتب سازی داده در کنترل GridView شما فعال شده است و می توانيد از آن استفاده کنيد . خروجی و عملکرد همانند مثال بالا خواهد بود .