PDA

View Full Version : سوال: رنگي شدن ركوردهاي خاص در گريد



rana-writes
سه شنبه 08 آذر 1390, 21:13 عصر
سلام دوستان برنامه نويس
من كلي جستجو كردم ولي چيزي پيدا نكردم

يه گريدي دارم كه يه فيلد Temp توش دارم
حالا ميخوام اون ركوردهايي كه فيلد Tempشون مساوي يك هستش با يك رنگ خاص و اونهايي كه مساوي صفره با يك رنگ خاص ديگه نشون بدم
توي دات نت اين كار رو از توي RowDataBound ميشد انجام داد، ولي اينجا توي C# رويدادشو پيدا نميكنم

ممنون از راهنماييتون

zarrinnegar
سه شنبه 08 آذر 1390, 23:15 عصر
این کد ها رو توی event RowPostPaint بنویس


DataGridViewRow gvr;
gvr = datagridview1.Rows[e.RowIndex];
if (gvr.Cells["Temp"].Value.ToString() == "1"())
{
gvr.DefaultCellStyle.BackColor = Color.LightGreen;
}
else
gvr.DefaultCellStyle.BackColor = Color.White;

noroozifar
چهارشنبه 09 آذر 1390, 08:45 صبح
من همین کار را می خواهم انجام بدم با این تفاوت که می خواهم بین رکورد ها فرد و زوج در دیتا گرید ویو رنگ متفاوت باشه یعنی حالا بدم بین رکوردها تمایز ایجاد بشه ؟

uniqueboy_ara
چهارشنبه 09 آذر 1390, 10:58 صبح
شما کافیه تو شرط حلقه بالا باقیمانده تقسیم index هر رکورد رو بر 2 حساب کنی ( index%2 ) بعد اگه صفر شد ( زوج بود ) یه رنگی بهش بدی و اگه یک شد ( فرد بود ) یه رنگ دیگه بهش بدی:چشمک:

DataGridViewRow dgvr;
dgvr = dataGridView1.Rows[e.RowIndex];

if (dgvr.Index % 2 == 0)
dgvr.DefaultCellStyle.BackColor = Color.White;
else
dgvr.DefaultCellStyle.BackColor = Color.Yellow;

rana-writes
چهارشنبه 09 آذر 1390, 10:59 صبح
این کد ها رو توی event RowPostPaint بنویس


DataGridViewRow gvr;
gvr = datagridview1.Rows[e.RowIndex];
if (gvr.Cells["Temp"].Value.ToString() == "1"())
{
gvr.DefaultCellStyle.BackColor = Color.LightGreen;
}
else
gvr.DefaultCellStyle.BackColor = Color.White;


سلام
ممنون از راهنماييتون
منتها يه مشكلي پيش مياد، موقع نمايش گريد اون سطر آخري كه خالي هست رو هم بررسي ميكنه و خطاي Object Refrence ميده
يعني اگه گريد من 8 تا سطر پر داشته باشه، index رو از صفر تا 7 ميخونه و سطر خالي هشتم رو هم بررسي ميكنه
يه همچين كدي هم گذاشتم

if ((gvr.Cells["Type"].Value).ToString() == null)


ولي بازم به همين كه ميرسه خطا ميده
ممنون ميشم راهنماييم كنين

uniqueboy_ara
چهارشنبه 09 آذر 1390, 11:08 صبح
دو تا کار میشه کرد
1. اگه امکانش وجود داره، امکان Allow User to add row رو غیر فعال کنید تا سطر خالی وجود نداشته باشه
2. از Exception handling استفاده کنید

mahmoud99
چهارشنبه 09 آذر 1390, 11:17 صبح
سلام
برای این کار کافی خاصیتAlternating row default cell style رو تنظیم کنید.

saeedhushmand
چهارشنبه 09 آذر 1390, 14:53 عصر
با کد زیر می تونید سطر های گرید یکی در میان رنگش عوض کنید


private void comboBox4_SelectedIndexChanged(object sender, EventArgs e)
{
if (comboBox4.Text == "زرد")
{
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
dataGridViewCellStyle3.BackColor = System.Drawing.Color.Yellow;
this.dataGridView1.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle3;
}
if (comboBox4.Text == "سبز")
{
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
dataGridViewCellStyle3.BackColor = System.Drawing.Color.LightGreen;
this.dataGridView1.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle3;
} if (comboBox4.Text == "خاکستری")
{
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
dataGridViewCellStyle3.BackColor = System.Drawing.Color.LightGray;
this.dataGridView1.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle3;
} if (comboBox4.Text == "آبی")
{
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
dataGridViewCellStyle3.BackColor = System.Drawing.Color.LightBlue;
this.dataGridView1.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle3;
}
}

noroozifar
پنج شنبه 10 آذر 1390, 22:42 عصر
سلام
برای این کار کافی خاصیتAlternating row default cell style رو تنظیم کنید.
چی باید از ان تغییر داده بشه ؟؟؟ در پنجره cellstyl builder مربوط به Alternating row default cell style