DataView Class | طراحی سایت با asp.net
در این قسمت از طراحی سایت با asp.net به شی DataView میپردازیم.
در Ado.NET ھمان View در Sql Server است.شی است که میتوان به وسيله ی آن يک ديد ايجاد کرد.به عبارت ديگر اگر اطلاعات داخل يک DataTable را از يک صافی بگذرانيد و يا بر اساس مقادير مختلف مرتب کنيد DataView ايجاد می شود.شی DataView در مبحث DataBinding نيز کاربرد دارد.اولين مبحثی که در مورد DataView پيش می آيد مرتب کردن داده ھا است.با يک مثال متد Sort از شی DataView را توضيح می دھيم.
در ابتدا يک سری کد عمومی در وب سایت:
Dim cs As String = ConfigurationManager.ConnectionStrings("aaa").ConnectionString Dim con As New SqlConnection(cs) Dim ds As New DataSet Dim qs As String = "SELECT TOP 9 * FROM customer" Dim adp As New SqlDataAdapter(qs, con) adp.Fill(ds, "customer") GridView1.DataSource = ds.Tables("customer")
فقط در مورد QueryString يک نکته بگويم که top به معنی ٩ سطر اول از جدول است.بقيه ی موارد تکراری است.حالا يک متغير از نوع DataView تعريف می می کنيم و آرگومان ورودی آن را که از جنس است نام جدولی را میدھيم که قرار است ازش يک View ايجاد کنيم:
Dim dv1 As New DataView(ds.Tables("customer"))
نام متغير ما نام جدول را Customer که در DataSet قرار داشت پر کرديم گذاشتيم.حالا می خواھيماز متد Sort استفاده کنيم.اين متد يک مقدار نياز دارد که ھمان نام ستونی است که داده ھا بايد بر اساس آن مرتب شوند.مثلا يادتان ھست که در Sql مرتب کردن با کلمه ی کليدی ORER BY column name بود .در اينجا به صورت زير است:
dv1.Sort = "customer_name"
يعنی مرتب سازی Dataview بر اساس ستون Customer_name است.برای نمايش ھم از GridView استفاده می کنيم:
GridView2.DataSource = dv1
خوب شايد از خود بپرسيد که چرا از کلمه ی کليدی ORER BY column name در Query String استفاده نکرديم؟جواب اين است که اگر تعداد اين مرتب سازی ھا بيش از يکی باشد در روش Query String بايد چند Query String نوشت و تک تک را اجرا کرد در حاليکه در اينجا با يک خط کد اين کار انجام می شود. مثلا در زير مرتب سازی بر اساس شھر مشتری است:
Dim dv2 As New DataView(ds.Tables("customer")) dv2.Sort = "customer_city" GridView3.DataSource = dv2
در نھايت برای نمايش کار جديدی می کنيم:
Me.DataBind()
به جای اينکه ٣ بار برای ھر GridView يک بار DataBind را انجام دھيم يک بار اين را انجام داديم.ھمان ريشه ی صفحه است. حتی عمل مرتب سازی می تواند بر اساس دو يا بيش از دو نام باشد:
dv2.Sort = "customer_name,customer_city"
دقت کنيد که نام ستون ھا در اينجا با کاما از ھم جدا می شوند.ھمچنين می توانيم مرتب سازی را صعودی و نزولی کنيم.اگر خواستيم صعودی باشد که مقدار پيش فرض است کلمه ی کليدی acc که مخفف Ascending است را در ادامه ی قسمتی که نام ستون مورد نظر ذکر شده قرار می دھيم و اگر نزولی باشد کلمه ی DESC که مخفف Descending است را به ان اضافه می کنيم:
مرتب سازی نزولی dv1.Sort = "customer_name DESC" مرتب سازی صعودی dv1.Sort = "customer_name ASC"
حالا که کمی با DataView آشنا شديم بايد به سراغ متد بعدی آن يعنی RowFilter برويم.اين متد به ما اجازه ی فيلتر کردن داده ھا را می دھد.و نقش WHERE را بازی می کند. در مثال زير ابتدا يک سری کد تکراری می بينيد:
Dim cs As String = ConfigurationManager.ConnectionStrings("aaa").ConnectionString Dim con As New SqlConnection(cs) Dim ds As New DataSet Dim qs As String = "SELECT * FROM customer" Dim adp As New SqlDataAdapter(qs, con) adp.Fill(ds, "customer") Dim dv1 As New DataView(ds.Tables("customer"))
سپس از متد RowFilter آن استفاده کرده و تمام مشتريانی که ساکن کرج ھستند را بدست می آوريم.اين يک نوع فيلتر کردن داده ھا است:
Dim dv1 As New DataView(ds.Tables("customer")) dv1.RowFilter = "customer_city='karaj'" GridView1.DataSource = dv1
کار ديگر استفاده از کلمه ی کليدی Like است که اسامی را فيلتر می کند:
Dim dv2 As New DataView(ds.Tables("customer")) dv2.RowFilter = "customer_city='karaj' AND customer_name LIKE 'r%'" GridView2.DataSource = dv2
در اين کد تمام افرادی که ساکن شھر کرج ھستند و اول اسمشان r دارد را به ما می دھد.علامت % يعنی ھر حرفی و به ھر تعدادی(حتی ٠ تا). و يا کد زير که تمام افرادی که ساکن شھر کرج ھستند و اول وسط يا آخر اسمشانيک بار از حرف r استفاده شده را می دھد:
Dim dv3 As New DataView(ds.Tables("customer")) dv3.RowFilter = "customer_city='tehran' AND customer_name LIKE '%r%'" GridView3.DataSource = dv3
خوبی اين موارد اين است که ھر گونه فيلتر داده ھا را می توانيد بدون اتصال و باز و بسته کردن Connection ايجاد کنيد.اگر کمی با Sql آشنا باشيد می توانيد فيلتر ھای بسيار جالبی روی داده ھا اعمال کنيد.کلمات کليدی از قبيل
و .... * / + - ISNULL NOT
شما ھمچنين می توانيد از توابع جمعی نظير Min Max …نيز استفاده کنيد در پست بعدی مثالی زير يکی از توابع جمعی را روی دو جدول که با يک Relation به ھم متصل ھستندخواهیم گفت .برای سفارش طراحی سایت با ماما تماس بگیرید الو وب
دیدگاهتان را بنویسید