چطور می تونم رنگ سطر i ام از یه datagrid را عوض کنم؟
چطور می تونم رنگ سطر i ام از یه datagrid را عوض کنم؟
دیتاگرید یک موجود شیء گرا است! شاید یکی از بهترین کنترل های ASP.NET باشد. هر ردیف آن با این بحث به سادگی قابل دسترسی و هر خاصیت آن هم قابل مقدار دهی است. برای مثال می توان فونت یک ردیف را tahoma و اندازه ی آنرا 10 نقطه و رنگ آنرا آبی و پشت زمینه آنرا زرد کرد! و یا حتی یک سلول خاص را...
یک مثال در این زمینه:
Conditional Formatting ASP.NET DataGrid Columns
متاسفانه مشکل من حل نشد. :?
من دستور زیر را برای عوض کردن رنگ ستون i ام از Datagrid نوشتم و میخوام چیزی شبیه همین دستور را برای عوض کردن رنگ سطر i ام از اون بنویسم .
DataGridReg.Columns[i].ItemStyle.BackColor =Color.Blue;
شما در چه هنگامی می خواهید این رنگ را عوض کنید؟
اگر هنگام بکارگیری رخدادهایی مانند ItemDataBound می خواهید اینکار را انجام دهید e.Item.BackColor را مقدار دهی کنید.
کاری که من می خواهم بکنم به این صورت است که من با استفاده از یک ستون Data grid که چک باکس است چند تا از سطرهای Data grid را انتخاب کردم و از بین این سطرها ، اونهایی که یک attribute مشترک داشتند رو انتخاب کردم و الان می خوام رنگ اون سطرها رو عوض کنم تا کاربر متوجه شود که کدوم سطرها ، اون attribute خاصشون با هم مساویند.
( من یک قسمت از انتخاب واحد دانشجویان رو پیاده سازی می کنم که این ستون خاص مربوط به تاریخ امتحاتات است که نباید با هم مساوی باشند و در صورتی که دانشجو درسهایی را انتخاب کند که تاریخ امتحانشون با هم مساوی است باید آن سطرهای خاص با رنگ متمایز نمایش داده شوند.(
امیدوارم درست تونسته باشم منzورم رو بیان کنم. :roll: :?:
سوال جالبی است! لطفا یک عکس از این دیتاگرید برای نمونه اینجا قرار بدهید تا بهتر بشود قضاوت کرد.
من هر کاری کردم نتونستم عکس Data Grid رو بذارم اینجا :?
ولی Data Grid من 6 تا ستون داره که Template column اند و شامل کد درس ، نام درس واحد ، نوع ، تاریخ امتحان و یک ستون به نام Select است که این ستون آخر Check box است
بعد از اینکه کاربر این Check box را کلیک کرد همون مواردی که در تاپیک بالا گفتم چک می شود
و می خوام اگه تاریخ 2 تا امنحان تداخل داشت ، رنگ این دو سطر i ام و j ام تغییر کند.
من دقیقا همین کار را کردم
برای این کار باید در رویداد RowCreated هر بار سطر آخری که ایجاد می شود را بررسی کنی و رنگ آن را تغییر دهی :
protectedvoid GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
if (GridView1.Rows.Count > 0)
if (GridView1.DataKeys[GridView1.Rows.Count - 1]["unread"].ToString() == true+"")
GridView1.Rows[GridView1.Rows.Count - 1].Font.Bold = true;
}
اون ستونی از دیتا گرید که باید چک بشه را قبلش باید در DataKeys دیتا گرید وارد کنی
برای مثال من ستون unread را می خواهم چک کنم و اگر مقدار آن true بود فونت آن سطر Bold شود
عزیز جان به تاریخ و روز تاپیک توجه کن
خب هنوز کسی بهش جواب درست و حسابی نداده
بنده خدا هنوز جوابشو نگرفته!