PDA

View Full Version : سوال: مشکل در رنگی کردن ستونهای RadGridView



adineh67
یک شنبه 25 آبان 1393, 19:55 عصر
سلام
من با استفاده از کد زیر ستونهای گریدویوم رو یک در میون رنگی میکنم(کد رو در قسمت پیج لود قرار دادم)



for (int j = 0; j <= 23; j = j + 2)
{
for (int i = 0; i < radGridView1.RowCount; i++)
{
Telerik.WinControls.UI.GridCellElement cellPlaceHolder = radGridView1.TableElement.GetCellElement(radGridVi ew1.Rows[i], radGridView1.Columns[j]);
cellPlaceHolder.DrawFill = true;
cellPlaceHolder.BackColor = Color.LightGray;
}

}


تعداد ستونهایی که دارم زیاد هست که توسط اسکرول گرید ویو میتونم همه رو مشاهده کنم.مشکلی که دارم اینه که وقتی برنامه رو اجرا می کنم ستونها درست یکی در میون رنگی هستن اما وقتی اسکرول رو واسه مشاهده بقیه ستونها میکشم ترتیب ستونهای رنگی بهم میریزه
ممنون میشم راهنماییم کنید مشکل از کجاست؟

sajadsobh
یک شنبه 25 آبان 1393, 20:31 عصر
جریان اون 23 چیه؟
من با Telerik کار نکردم ولی از این کد من برای رنگی کردن یکی در میون گریدویو استفاده میکنم و مشکلی ندارم.

for (int i = 0; i <= GrideView1.Rows.Count - 1; i++)
{
if (i % 2 == 0)
GrideView1.Rows[i].DefaultCellStyle.BackColor = Color.Bisque;
}

کد رو هم توی رویداد DataBindingComplete واسه GridView می نویسم.

adineh67
یک شنبه 25 آبان 1393, 21:51 عصر
شمارنده j مربوط به تعداد ستونهاست و 23 آخرین ستونی هست که تمایل دارم رنگش تغییر کنه

adineh67
یک شنبه 25 آبان 1393, 22:03 عصر
خصوصیت DefaultCellStyle برای radgridview تعریف نشده ممنون میشم از دوستان راهنمایی کنن ببینم چی میتونم جایگزینش کنماینو نوشتم ولی موقع اجرا اتفاقی نمیفته



radGridView1.Rows[i].Cells[j].Style.BackColor = Color.Blue;

sajadsobh
یک شنبه 25 آبان 1393, 22:17 عصر
خصوصیت DefaultCellStyle برای radgridview تعریف نشده ممنون میشم از دوستان راهنمایی کنن ببینم چی میتونم جایگزینش کنم

شما حلقه رو تغییر دادین؟ همین شرطی گذاشتم رو تست کنین ببینین جواب نمیده؟!

adineh67
یک شنبه 25 آبان 1393, 22:45 عصر
آره دوست عزیز این کد رو هم تو پیج لود گذاشتم و تست کردم و هم توی دیتا بایندینگ اما هیچ تغییری نکرد



for (int i = 0; i <= radGridView1.Rows.Count - 1; i++)
{
if (i % 2 == 0)
radGridView1.Rows[i].Cells[1].Style.BackColor = Color.Blue;
}

silver189
دوشنبه 26 آبان 1393, 12:20 عصر
دوست عزیز شما using System.Drawing; رو اضافه کنید درست می شه.

adineh67
دوشنبه 26 آبان 1393, 13:41 عصر
قبلا اضافه کردم ولی جوابی نگرفتم

حسین.کاظمی
دوشنبه 26 آبان 1393, 13:51 عصر
سلام دوست عزیز
حقیقتا منم با Telerik کار نکردم
ولی تو یه رویداد دیگه ایی از دیتا گرید بزار ببین درست میشه

adineh67
دوشنبه 26 آبان 1393, 14:33 عصر
دقیقتر بخوام بگم مشکل من تو رنگی کردن ستونها نیست هر کدی که نوشتم درست جواب داده و ستونهام رو یکی در میون رنگی کردم مشکلم اینه که وقتی در زمان اجرا واسه دیدن بقیه ستونهای گریدویو اسکرول رو می کشم این ترتیب رنگی بهم میریزه
موندم چطوری درستش کنم کدم رو تو خاصیت بایندینگ گریدویو و سل فرمتینگ و حتی پیج لود گذاشتم ولی باز تغییری نکرد.

alim1367
دوشنبه 26 آبان 1393, 14:35 عصر
radGridView1.Rows[0].Cells[i].Style.BackColor = Color.Aqua;
radGridView1.Rows[0].Cells[i].Style.DrawFill = true;

خط دوم هم اضافه کن

adineh67
دوشنبه 26 آبان 1393, 15:10 عصر
تموم چیزی که نوشتم اینه اما همچنان مشکلی که گفتمو دارم


private void radGridView1_CellFormatting(object sender, Telerik.WinControls.UI.CellFormattingEventArgs e)
{

for (int j = 0; j <= 23; j = j + 2)
{
if (e.CellElement.ColumnInfo.Index == j)
{
e.CellElement.DrawFill = true;
e.CellElement.BackColor = Color.Aqua;
}

}
}

sajadsobh
دوشنبه 26 آبان 1393, 16:25 عصر
RadGridView.EnableRowVirtualization = false این جواب میده؟

adineh67
دوشنبه 26 آبان 1393, 18:35 عصر
RadGridView.EnableRowVirtualization = false این جواب میده؟

.EnableRowVirtualization همچین چیزیو تو خصوصیات ندارم

alim1367
سه شنبه 27 آبان 1393, 09:32 صبح
بنظرم اول گرید بایند کن با یه حلقه اینو کارو بکن من اینو کارو کردم

adineh67
سه شنبه 27 آبان 1393, 10:33 صبح
متوجه نشدم :گیج:

alim1367
سه شنبه 27 آبان 1393, 11:14 صبح
می شه بگی اطلاعات از کجا تو گرید قرار می دی

adineh67
سه شنبه 27 آبان 1393, 12:07 عصر
من با linq کار میکنم در زمان اجرا توسط دستور سلکت اطلاعاتو میخونم و میفرستم به دیتا سورس گریدویو

alim1367
سه شنبه 27 آبان 1393, 13:47 عصر
خب بعد از این که دیتا سورس مقدار دادییه حلقه بزار فیلدها و ردیف هایی که می خوای رنگی کن

adineh67
سه شنبه 27 آبان 1393, 18:26 عصر
دوست عزیز این دقیقا کدی هست که من نوشتم


radGridView1.DataSource = cntl.showseg();
for (int j = 0; j <= 23; j = j + 2)
{
for (int i = 0; i <= radGridView1.Rows.Count - 1; i++)
{
Telerik.WinControls.UI.GridCellElement cellPlaceHolder = radGridView1.TableElement.GetCellElement(radGridVi ew1.Rows[i], radGridView1.Columns[j]);
cellPlaceHolder.DrawFill = true;
cellPlaceHolder.BackColor = Color.LightGray;
}

}


تابع showseg نتایج سلکت رو برمیگردونه و بلافاصله بعدش ستونهام رو یکی در میون رنگی کردم که در موقع اجرا کدم درست جواب میده فقط اسکرول گریدویو رو که میکشم تا بقیه ستونها رو ببینم رنگها بهم میریزن

alim1367
چهارشنبه 28 آبان 1393, 07:56 صبح
for (int i = 0; i < radGridView1.Rows[0].Cells.Count; i++)
{
radGridView1.Rows[0].Cells[i].Style.Font = font;
radGridView1.Rows[0].Cells[i].Style.BackColor = Color.Aqua;
radGridView1.Rows[0].Cells[i].Style.DrawFill = true;
radGridView1.Rows[0].Cells[i].Style.CustomizeFill = true;
}

من با این کد رنگ ردیف اولو عوض می کنم حالا شما یه حلقه دیگه بزار که روی ردیف ها حرکت کنه
شاید راهش درست نباشه ولی کار می کنه

adineh67
چهارشنبه 28 آبان 1393, 09:10 صبح
ممنونم دوست عزیز این خط رو که اضاف کردم درست شد


radGridView1.Rows[i].Cells[j].Style.CustomizeFill = true;

بینهایت سپاسگذارم