PDA

View Full Version : سوال: تغییر رنگ سطر خاصی در DataGridView



NasimBamdad
یک شنبه 06 شهریور 1390, 15:22 عصر
لطفا به عکس زیر نگاه کنید

http://0000.2.img98.net/out.php/i28504_2.jpg

یک ستون هست به اسم وضعیت ترخیص ( release_status) . چه طوری میشه فقط اون سطر های که وضعیت ترخیص شان برابر است با " ترخیص است " ، قرمز رنگ شوند ،

توجه کنید ، کل یک سطر که وضعیت ترخیص اش " ترخیص است " رو قرمز کنم

pedramfj
یک شنبه 06 شهریور 1390, 16:18 عصر
سلام
بعد از اینکه اطلاعات را در دیتاگرید نمایش دادید .یک حلقه ایجاد کنید که بتعداد سطر های دیتاگرید اجرا شود و در درون حلقه کنترل کنید که آیا مقدار فیلد برابر با " ترخیص است "است یا خیر , اگر بود سطر مورد نظر را قرمز کنید.
راه های دیگه ای هم وجود دارد که فکر کنم این از همه آسان تره...
موفق باشد.

NasimBamdad
یک شنبه 06 شهریور 1390, 16:24 عصر
سلام
بعد از اینکه اطلاعات را در دیتاگرید نمایش دادید .یک حلقه ایجاد کنید که بتعداد سطر های دیتاگرید اجرا شود و در درون حلقه کنترل کنید که آیا مقدار فیلد برابر با " ترخیص است "است یا خیر , اگر بود سطر مورد نظر را قرمز کنید.
راه های دیگه ای هم وجود دارد که فکر کنم این از همه آسان تره...
موفق باشد.


از لحاظ تئوری مشکلی نیست ، اما من مسلط به کد ها نیستم ، ممنون میشم اگه نمونه کدش رو قرار بدید .

pedramfj
یک شنبه 06 شهریور 1390, 16:35 عصر
بعد از اینکه اطلاعات را در دیتاگرید نمایش دادید.از کد زیر استفاده کنید.
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
textBox1.Text = dataGridView1.SelectedRows[i].Cells[4].Value.ToString();
if (textBox1.Text == "ترخیص است")
{
dataGridView1.Rows[i].DefaultCellStyle.BackColor = Color.Red;
}
textBox1.Text = "";
}
بجای textbox می توانید از متغیر استفاده کنید.

NasimBamdad
یک شنبه 06 شهریور 1390, 16:51 عصر
بعد از اینکه اطلاعات را در دیتاگرید نمایش دادید.از کد زیر استفاده کنید.
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
textBox1.Text = dataGridView1.SelectedRows[i].Cells[4].Value.ToString();
if (textBox1.Text == "ترخیص است")
{
dataGridView1.Rows[i].DefaultCellStyle.BackColor = Color.Red;
}
textBox1.Text = "";
}
بجای textbox می توانید از متغیر استفاده کنید.

ممنون که وقت گذاشتید ، ممنونم .

ببینید اون TextBox پایین صفحه برای کار دیگه این تعبیه شده است ، من می خواهم بدون زدن دکمه یا چیز دیگه ای از زمانی که فرم لود می شود داده های درون DataGridView به صورت زیر باشند .

ببینید ، یکسری بیمار پذیرش و ... شده اند ، در نهایت محتوایات جدول patients من با یکسری inner join دیگه با جداول دیگر در DGV نمایش داده شده است .

می خواهم طوری باشه که هر سطر که نشانگر یک بیمار هست ، اگر وضعیت ترخیص آن " ترخیص است " بود یعنی مقدار ستون وضعیت ترخیص آن برابر " ترخیص است " بود ، اون سطر Automatic قرمز رنگ شود .

http://0000.2.img98.net/out.php/i28583_2.jpg

pedramfj
یک شنبه 06 شهریور 1390, 17:04 عصر
شما می توانید همین کد را در بخش فرم لود قرار دهید . مشکلی ایجاد نمیکند.البته بعد از کدی که دیتاگرید را پر می کند.
فکر کنم کد بالا مشکل شما را تا حدی حل کرده باشه.ردیف هایی که قرمز می شوند درست است؟
تو کد بالا مشخصه BackColor ردیف دیتاگرید مقدار دهی می شود که طبق تصویر , شما می خواهید حاشیه ردیف قرمز شود که من در این مورد اطلاعاتی ندارم.

NasimBamdad
یک شنبه 06 شهریور 1390, 17:10 عصر
شما می خواهید حاشیه ردیف قرمز شود که من در این مورد اطلاعاتی ندارم.

اون تنها یک مثال بود ، بله می خواهم BackColor قرمز شود


فکر کنم کد بالا مشکل شما را تا حدی حل کرده باشه.ردیف هایی که قرمز می شوند درست است؟

بله می خواهم ردیف های که" ترخیص است " قرمز شوند

NasimBamdad
یک شنبه 06 شهریور 1390, 17:13 عصر
در واقع مشکل من این هست که چه طوری باید ردیف های رو پیدا کنم که مقدار وضعیت ترخیص شان " ترخیص است " می باشد . و بعد Back Color اون ها رو قرمز کنم

pedramfj
یک شنبه 06 شهریور 1390, 17:16 عصر
دوست عزیز کدی که به شما دادم همه ی این کارا را انجام میده .
در فرم لود و بعد از کدی که دیتاگرید را پر میکند از این کد استفاده کنید.

NasimBamdad
یک شنبه 06 شهریور 1390, 17:18 عصر
دوست عزیز کدی که به شما دادم همه ی این کارا را انجام میده .
در فرم لود و بعد از کدی که دیتاگرید را پر میکند از این کد استفاده کنید.


در واقع مشکل من این هست که چه طوری باید ردیف های رو پیدا کنم که مقدار وضعیت ترخیص شان " ترخیص است " می باشد . و بعد Back Color اون ها رو قرمز کنم

pedramfj
یک شنبه 06 شهریور 1390, 17:25 عصر
ببخشید تو کد بالا اشتباه کردم
از این کد استفاده کنید.
for (int i = 0; i <dataGridView1.Rows.Count-1 ; i++)
{
textBox1.Text = dataGridView1.Rows[i].Cells[1].Value.ToString();
if (textBox1.Text == "ترخیص است")
{
dataGridView1.Rows[i].DefaultCellStyle.BackColor = Color.Red;
}
textBox1.Text = "";
}
از این کد استفاده کنید جواب می دهد .
اگر دیتاگرید قابلیت درج توسط کاربر را دارد باید تعداد ردیف های دیتاگرید را از 1 کم کرد.

NasimBamdad
یک شنبه 06 شهریور 1390, 17:32 عصر
Conversion failed when converting the varchar value 'حسن' to data type int.


با این خطا رو به رو شدم

NasimBamdad
یک شنبه 06 شهریور 1390, 17:38 عصر
for (int i = 0; i < dataGridViewX1.Rows.Count - 1; i++)
{
string str;
str = dataGridViewX1.Rows[i].Cells[4].Value.ToString();
if (str == "ترخیص است")
{
dataGridViewX1.Rows[i].DefaultCellStyle.BackColor = Color.Red;
}

}


مرسی دوست گلم ، با این کد مشکلم حل شد !

دستت طلااااااااااااااااااا

pedramfj
یک شنبه 06 شهریور 1390, 17:41 عصر
موفق باشید