PDA

View Full Version : جایگزینی مقادیر در dataGridView



saeed.8350028
سه شنبه 14 آذر 1391, 16:50 عصر
سلام دوستان
من یک جدول را به grid نسبت دادم که یک فیلد از نوع int داره و من می خواهم مثلا به جای عدد 0 در گرید بنویسه "عالی" ، به جای عدد 1 بنویسه "خوب" و ... یعنی اگه توی جدول عدد 1 ذخیره شده توی گرید به جای 1 بنویسد "عالی".
لطفا راهنمایی کنید. ممنون

mohammad-bahrami
سه شنبه 14 آذر 1391, 22:35 عصر
این کد بعد از fill() قرار بده


foreach (DataGridViewRow item in dataGridView1.Rows)
{
if (item.Cells[1].Value.ToString() == "1") item.Cells[1].Value = "عالی";
else if (item.Cells[1].Value.ToString() == "2") item.Cells[1].Value = "متوسط";
}

saeed.8350028
چهارشنبه 15 آذر 1391, 11:08 صبح
مرسی از جوابتون.
ولی در مواردی که تعداد رکورد های نمایش داده شده خیلی زیاد باشه بهینه نیست.
می خواستم بدونم کد بهتر نیست مثلا در زمان نوشتن query. ضمنا من از linq استفاده می کنم.
تشکر

Mahmoud.Afrad
چهارشنبه 15 آذر 1391, 13:22 عصر
به اینصورت باید عمل کنی:

var records = from rec in db.tbl
select new
{
status = (rec.degree == 0) ? "عالی" :
(rec.degree == 1) ? "خوب" :
(rec.degree == 2) ? "متوسط" :
(rec.degree == 3) ? "ضعیف" : null
};

mohammad-bahrami
چهارشنبه 15 آذر 1391, 17:25 عصر
use db_test
SELECT
(CASE code
WHEN '0' THEN CONVERT(NVarChar(MAX),'عالی')
WHEN '1' THEN CONVERT(NVarChar(MAX),'خوب')
WHEN '2' THEN CONVERT(NVarChar(MAX),'متوسط')
WHEN '3' THEN CONVERT(NVarChar(MAX),'ضعیف')
ELSE NULL
END) FROM [tb]




یا

SELECT
(CASE
WHEN [code] ='0' THEN CONVERT(NVarChar(MAX),'عالی')
WHEN [code] = '1' THEN CONVERT(NVarChar(MAX),'خوب')
WHEN [code] = '2' THEN CONVERT(NVarChar(MAX),'متوسط')
WHEN [code] = '3' THEN CONVERT(NVarChar(MAX),'ضعیف')
ELSE NULL
END) AS [status]
FROM [tb]

saeed.8350028
پنج شنبه 16 آذر 1391, 11:56 صبح
مرسی از جوابتون محمد جان.
ولی یک سوال برام پیش اومد: این کد ها را باید کجا استفاده کنم؟ من از LINQ برای اتصال استفاده می کنم.
یعنی واسه هر select از store procedure استفاده کنم؟

mohammad-bahrami
پنج شنبه 16 آذر 1391, 12:46 عصر
با متد ExecuteQuery می توان دستورات اسکیول را اجرا کرد


var x = db.ExecuteQuery<tb>(@"SELECT code=
(CASE code
WHEN '0' THEN CONVERT(NVarChar(MAX),'عالی')
WHEN '1' THEN CONVERT(NVarChar(MAX),'خوب')
WHEN '2' THEN CONVERT(NVarChar(MAX),'متوسط')
WHEN '3' THEN CONVERT(NVarChar(MAX),'ضعیف')
ELSE NULL
END),id FROM [tb]"
);
dataGridView1.DataSource = x.ToList();