بررسی شیئ DataView در ASP.NET
یکی از اعمال مورد نیاز در کار با دادههای یک بانک اطلاعاتی، جستجو، مرتب سازی و فیلتر کردن دادهها بر حسب نیازمندیهای برنامه کاربردی می باشد. در ADO.NET برای انجام این اعمال روی دادهها در یک DataTable دو روش وجود دارد: یکی استفاده از متد Select از شیئ DataTable و دیگری استفاده از شی DataView. شیئ DataView دارای توانایی بیشتری نسبت به متد Select از شیئ DataTable میباشد و کار با آن نیز سادهتر است. در این مقاله سعی شده به اختصار درباره خصوصیتها، متدها و نحوه کار با شیئ DataView اطلاعاتی ارائه شود.
شیئ DataView به مانند یک منبع برای اتصال کنترلهای دیگر به آن مورد استفاده قرار می گیرد. این شیئ نمایی از یک شیئ DataTable میباشد که برای جستجو، فیلتر، مرتب سازی و حتی دستکاری دادههای آن شیئ DataTable مورد استفاده قرار میگیرد. هر شیئ DataView شامل یک مجموعه DataRowView می باشد که مشابه شیئ DataRow در DataTable هستند. این اشیاء دارای ویژگیهایی هستند که در زیر به اختصار توضیح داده شدهاند:
DataView: شیئ DataView که سطر جاری به آن تعلق دارد را بر میگرداند.
Item: مقدار یک ستون از سطر فعلی را بر میگرداند.
Row: شیئ DataRow که در حال حاضر در حال بررسی است را بر میگرداند.
اشیاء DataView در داخل یک شیئ دیگر به نام DataViewManager قرار می گیرند. رابطه بین این دو شیئ مانند رابطه بین DataTable و DataSet می باشد. با این تفاوت که امکان دارد یک شیئ DataTable دارای چند شیئ DataView باشد که برای انجام جستجو و فیلتراسیونهای مختلف روی دادههای آن استفاده میشوند. در حقیقت در زمان اتصال یک کنترل به یک شیئ DataSet، در پروسه Data-Binding آن، کنترل به شیئ DataView مربوط به آن DataSet متصل میشود که با خصوصیت DefaultViewManager شیئ DataSet مشخص میشود.
برای ساخت یک شی DataView از متد New استفاده می شود. در مثال زیر یک شی DataView میسازیم:
Dim myDataView As New DataView
myDataView.Table = myDataSet.myTable
myDataGrid.DataSource = myDataView
myDataGrid.DataBind()در مثال بالا ابتدا یک شیئ DataView جدید به نام myDataView ایجاد شده است. سپس خصوصیت Table آن برابر با MyDataTable از myDataSet که در برنامه کابردی ما موجود است قرار داده میشود. شی DataView دارای خصوصیتهایی میباشد که در زیر به اختصار توضیح داده شدهاند:
AllowDelete ،AllowEdit و AllowNew: با تنظیم این مقادیر Boolean می توان با دستکاری، اضافه و حذف مقادیر در DataView، مقادیر متناظر آنها را در شیئ DataTable مربوط تغییر داد.
Count: تعداد اشیاء RowView موجود در DataView جاری را بر می گرداند. (مشابه خصوصیت Count از شیئ DataTable)
Item: شیئ DataRowView که توسط اندیس به وسیله پارامتر به آن ارسال شده است را بر میگرداند.
RowFilter: عبارتی که برای فیلتر کردن سطرهای درون DataView استفاده می شود را مشخص میکند.
Sort: عبارتی که برای مرتب کردن سطرهای درون DataView به کار می رود را مشخص میکند.
Table: شیئ DataTable متناظر با DataView را مشخص می کند.
برای استفاده از خصوصیات RowFilter و Sort عبارتهایی هستند که مشابه عبارتهای محاسباتی برای متد Select از شی DataTable مورد استفاده قرار میگیرند. برای تنظیم مقادیر خصوصیت Sort که مربوط به روش مرتب سازی سطرهای DataRow است، لازم است مقادیر ستونهای مورد نظر جهت مرتب سازی را به ترتیب در داخل علامت “” قرار دهیم. برای مثال برای مرتب سازی یک DataView به ترتیب بر حسب ستونهای Date و Author به روش زیر عمل میکنیم:
myDataView.Sort = “Date, Author”
با قرار دادن عبارتهای ASC و DESC بعد از نام ستونها با یک فاصله میتوان سطرها را به ترتیب صعودی یا نزولی مرتب کرد. (حالت پیش فرض صعودی ASC است)
myDataView.Sort = “Date DESC, Author ASC”
برای تنظیم مقدار RowFilter می توان از عبارات DataColumn استفاده کرد. این عبارات شامل یک سری توابع، عملگرها، عبارات و نام ستونها میباشند که جهت انجام فیلتراسیون مورد استفاده قرار می گیرند. در این عبارتها می توان از تمام عملیات دستکاری روی رشتهها و متغیرهای رشتهای استفاده کرد. به علاوه برای استفاده از مقادیر تاریخ باید آنها را در بین علامات ## قرار داد. برای استفاده از یک ستون خاص در این عبارات تنها کافیست از نام آن ستون استفاده کنید. برای استفاده ز سطرهای فرزند از عبارت .Child قبل از آنها و برای استفاده از سطر مادر نیز از عبارت .Parent قبل از آنها استفاده کنید.
بعضی از توابع قابل استفاده در این عبارات عبارتند از: Sum ،Avg ،Min ،Max و Count. و هچنین بعضی از عملگرهای منطقی مورد استفاده عبارتند از: And Or Not < > <= >= <> In و Like. عملگر In مشخص می کند که آیا مقدار مورد نظر در محدوده تعیین شده قرار دارد یا نه؟ مقادیر مربوط به حدود باید توسط علامات ” از هم جدا شوند. برای مثال:
Command = “Author In (‘K’, ‘M’, ‘N’)”
برخی عملگرهای محاسباتی مانند + – * / % نیز در عبارات DataColumn قابل استفاده هستند. تعدادی تابع نیز در این عبارات مورد استفاده قرار می گیرند که برخی از آنها عبارتند از: Convert ،Len و ISNull.
در پایان نیز سه متد مهم شیئ DataView را به اختصار مورد بررسی قرار میدهیم:
AddNew: اضافه کردن یک سطر جدید به DataView.
Delete: پاک کردن یک سطر از DataView.
Find: سطرهایی که شامل پارامتر ارسالی به این متد هستند را پیدا می کند.