GridView ابزار قدرتمدنی برای نمایش حجم زیادی از اطلاعات است که بی تردید در بسیاری از موارد کارگشااست، شرکتهای مختلف GridViewهای مختلفی را با قابلیتهای متفاوتی برای استفاده آماده کردهاند که از آن میان میتوان به GridView فوقالعاده ی شرکت XCEED که رابط WPF دارد اشاره کرد. مایکرسافت هم بطور پیش فرض در دات نت یک GridView قرار داده که امکانات خوبی دارد و نقطه ضعف این ابزار صرفا مربوط به ابزارها و قابلیتهای کلاینتی است.
برای مثال اگر شما بخواهید وقتی کاربر ماوس را روی ردیفهای این جدول ببرد، رنگ پسرمینه تغییر کند، بی شک GridView دات نت این قابلیت را نخواهد داشت. اما نکته قابل ذکر آن است که بخاطر eventهای خوبی که این لیست دارد، براحتی میتوان قابلیتهای جدید و منحصربه فردی را به آن اضافه کرد. امروز نحوه ایجاد Hover برای Row های یک GridView را بررسی خواهیم کرد.
راههای زیاد و متفاوتی برای این کار وجود دارد که با یک جستجوی ساده در Google قابل مشاهده و دسترسی است. اما مزیت راه اشاره شده در اینجا آن است که از مشخصات خود RowStyle و AlternatingRowStyle برای تغییر استفاده میکند و برای تغییر پس زمینه ، شما لازم نیست که در Mouse Over کلیه مشخصات دلخواه را تنظیم و مقادیر تنظیم شده را در Mouse Out دوباره به حالت قبل بازگردانید .
برای این کار در Event ی با نام OnRowCreated ( زمانی که ردیف ایجاد میشود ) قطعه کد زیر را بنویسید
[sourcecode language=”c#”]
<code>
protected void grdList_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes.Add(“onmouseover”, “this.originalstyle=this.style.backgroundColor;
this.style.backgroundColor=’#FFFFbe’”);
e.Row.Attributes.Add(“onmouseout”, “this.style.backgroundColor=this.originalstyle;”);
}
}
[/sourcecode]
و در UI صفحه ، جایی که GridView را تعریف کردید، این event را در لیست فراخوانیهای GridView اضافه کنید ، یعنی باید داشته باشید : OnRowCreated=grdList_RowCreated
در نهایت با انجام کارهای بالا، کار تمام است. همانطور که در قطعه کد بالا ملاحظه میکنید از یک تکه کد جاوا اسکریپت برای اضافه کردن خاصیت Hover به GridView استفاده شده و همانطور که ملاحظه میکنید، هنگامیکه ماوس از روی ردیف کنار میرود، تمام خاصیتهای قبلی ردیف ( چه در RowStyle و چه در AlternateRowStyle ) به جای خودشان بازگردانده میشوند.