PDA

View Full Version : آموزش: رنگی کردن سطرهای datagridview بر اساس شرط خاص



jafarpalideh
سه شنبه 03 شهریور 1394, 12:11 عصر
با سلام .
یه کد دیدم گفتم شاید به درد بقیه دوستان بخوره .


foreach (DataGridViewRow roww in dataGridView1.Rows) {
if(dataGridView1[1,roww.Index].Value.ToString()=="تایید تعدادی")
roww.DefaultCellStyle.BackColor=Color.BurlyWood;
}

این کد رو تویه فرم لود برنامتون مینویسین .
تویه ستون (مثلا 1) هر جا که تایید تعدادی رو ببینه رنگ کل ستون رو عوض میکنه .

حسین.کاظمی
سه شنبه 03 شهریور 1394, 16:34 عصر
سلام دوست عزیز
ممنون بابت قطعه کدی که گذتشتید در اختیار دوستان ولی دوتا سوال داشتم
1- اگر این شرط براساس کوئری بود چیکار باید بکنیم؟
2-من توی یکی از جداولم توی یک فیلدش از اعداد0و1 استفاده کردم حالا برای نمایش در گرید ویو میخام بجای عدد0مثلا بنویسه خانم و بجای عدد 1بنویسه آقا ؟؟؟؟؟؟؟؟؟



ممنون

jafarpalideh
چهارشنبه 04 شهریور 1394, 07:45 صبح
سوال اولتون رو که متوجه نشدم . ولی وقتی تویه سطح برنامه میتونی این کار رو بکنی و شرط خاص رو بررسی کنی ، چه کاریه که بری از رویه دیتابیس بخونی .

جواب سوال دومت هم که میشه :

در رویداد CellFormatting همون گرید باید کد زیر رو بنویسی .



private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) {
if (dataGridView1.Columns[e.ColumnIndex].Name.Equals("pass"))
{
string _val = e.Value as string;
if (_val == null)
return;




switch (_val)
{
case "0":
e.Value = "خانم";
break;
case "1":
e.Value = "آقا";
break;


}


}

jafarpalideh
چهارشنبه 04 شهریور 1394, 08:04 صبح
اون کدی که نوشتم فقط بر اساس یک ظشرط کار میکنه .
اصلاح شدش رو اینجا میزارم .





if (dataGridView1.Columns[e.ColumnIndex].Name.Equals("pass")) {
string _val = e.Value as string;
if (_val == null)
return;




//switch (_val)
//{
// case "0":
// e.Value = "خانم";
// break;
// case "3":
// e.Value = "آقا";
// break;


//}
if (_val =="1")
{
e.Value = "آفا";
}
else if (_val == "3")
{
e.Value = "زن";


}


}

Mahmoud Zaad
چهارشنبه 04 شهریور 1394, 09:48 صبح
2-من توی یکی از جداولم توی یک فیلدش از اعداد0و1 استفاده کردم حالا برای نمایش در گرید ویو میخام بجای عدد0مثلا بنویسه خانم و بجای عدد 1بنویسه آقا ؟؟؟؟؟؟؟؟؟


سلام
برای این مورد بهتره در همون کوئری از دستور Case استفاده کنید. استفاده از رویداد گفته شده در دیتاگریدویو، برای رکوردهای بالا دردسر ساز هست.

حسین.کاظمی
چهارشنبه 04 شهریور 1394, 10:41 صبح
سلام
برای این مورد بهتره در همون کوئری از دستور Case استفاده کنید. استفاده از رویداد گفته شده در دیتاگریدویو، برای رکوردهای بالا دردسر ساز هست.

سلام
ممنون از پاسختون میشه یه نمونه کد بزارید بی زحمت!!!

Mahmoud Zaad
چهارشنبه 04 شهریور 1394, 12:26 عصر
این (https://msdn.microsoft.com/en-us/library/ms181765.aspx) اصل مطلب و این هم مثال (http://www.1keydata.com/sql/sql-case.html)