همانطور که در بخش قبل نشان دادیم ، کنترل GridView اطلاعات دریافتی از منبع داده ای را به صورت جدول نمایش می دهد ، که در آن هر سطر اطلاعات یک رکورد و هر ستون اطلاعات مربوط به یک فیلد ( Field ) داده ای را شامل می شود . یکی از مسائلی که در کار با داده های جدول وار با آن روبرو هستیم ، نیاز به مرتب سازی اطلاعات جدول بر حسب مقادیر یک ستون خاص است . مثلا در جدول Students که در زیر آن را نمایش داده ایم ، اطلاعات مربوط به جدول Students پایگاه داده دانشگاه ( UniverCity ) قرار دارد . ممکن است در این جدول بخواهیم اطلاعات دانشجویان را بر حسب نام خواندگی ( فیلد Family ) و یا نمرات آنها ( فیلد Grade ) مرتب کنیم . در این حالت است که می توانیم از قابلیت مرتب سازی داده در کنترل GridView استفاده کنیم .
کنترل GridView به ما امکان می دهد ، تا بتوانیم رکوردهای جدول آن را بر حسب مقادیر یک ستون آن مرتب کنیم . این کنترل دارای مکانیزم درون ساخته ای است که بدون نیاز به کد نویسی خاصی ، عملیات مرتب سازی داده را انجام می دهد .
نکته مهم : باید توجه داشته باشید که کنترل GridView زمانی می تواند تاطلاعات جدول خود را بر حسب مقادیر یک ستون آن مرتبط کند که کنترل سرور داده متصل به آن ، خود فابلیت مرتب سازی داده را داشته باشد . در واقع کنترل GridView امکان مرتب سازی داده را از کنترل سرور داده خود می گیرد . کنترل های SqlDataSource , AccessDataSource و ObjectDataSource از فابلیت مرتب سازی داده پشتیبانی می کنند ، اما کنترل XmlDataSource دارای این قابلیت نیست .
Student Table ID Name Family Major Grade ۱ Mohsen Amiri SoftWare ۱۹ ۲ Ali Rostami SoftWare ۱۲ ۳ Maryam Soltani HardWare ۱۶ ۴ Sohrab Kashani HardWare ۱۴ ۵ Behnam Mosavi SoftWare ۱۳
|
نحوه فعال سازی قابلیت مرتب سازی داده در کنترل GridView :
به طور کلی ۲ روش برای فعال سازی قابلیت مرتب سازی داده در کنترل GridView وجود دارد :
فعال سازی قابلیت مرتب سازی با کدنویسی در محیط کد برنامه
قعال سازی قابلیت مرتب سازی با استفاده از محیط طراحی ( Design ) در نرم افزار Visual Stuido 2005 :
۱ ) نحوه فعال سازی قابلیت مرتب سازی داده در کنترل 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 ۱ Mohsen Amiri SoftWare ۱۹ ۲ Ali Rostami SoftWare ۱۲ ۳ Maryam Soltani HardWare ۱۶ ۴ Sohrab Kashani HardWare ۱۴ ۵ Behnam Mosavi SoftWare ۱۳ |
قعال سازی قابلیت مرتب سازی با استفاده از محیط طراحی ( Design ) در نرم افزار Visual Stuido 2005 : شما یم توانید بدون کدنویسی و با استفاده از محیط طراحی ( Design ) نرم افزار Visual Studio 2005 ، قابلیت مرتب سازی کنترل GridView را فعال کنید . در این حالت پس از انجام عملیات لازم ، برنامه به طور خودکار کدهای لازم را در محیط کدنویسی تولید خواهد کرد . به عبارت دیگر مقدار خاصیت AllowSorting کنترل را به True تنظیم می کنید . برای استفاده از این روش مراحل زیر را انجام دهید :
صفحه ASP.NET مورد نظر خود را در نرم افزار Visual Studio باز کرده و آن را به نمای طراحی ( Design ) سوئیچ کنید .
سپس یک کنترل GridView و یک کنترل سرور داده که می خواهید کنترل GridView به آن متصل شود را بر روی صفحه قرار داده و ارتباط لازم با پایگاه داده را برای آن ایجاد کنید .
کنترل GridView را از روی صفحه انتخاب کرده و بر روی آن کلیک سمت راست نموده و از منوی باز شده علامت گزینه AllowSorting را قعال کنید .
اکنون خاصیت مرتب سازی داده در کنترل GridView شما فعال شده است و می توانید از آن استفاده کنید . خروجی و عملکرد همانند مثال بالا خواهد بود .