PDA

View Full Version : مبتدی: تغییر مقدار datagridview



mbaneshi
سه شنبه 25 مهر 1396, 22:29 عصر
سلام بر دوستان

من یه دیتا گرید ویو دارم که اطلاعات رو از جدول "اطلاعات دانش آموزان" میخونه. یکی از ستون ها پایه دانش آموز هست که به صورت عدد نشان داده می شود. من می خوام هنگام لود شدن دیتاگرید ویو اگه پایه 1 بود مقدار "پایه اول" و اگر 2 بود مقدار "پایه دوم" و ... نشان داده شود.
اگه راه حلی داره ممنون میشم راهنمایی کنید.

danialafshari
چهارشنبه 26 مهر 1396, 02:18 صبح
با سلام
نگفتید از چه روشی استفاده کنید و چه جدول ها و فیلدهایی دارید
توضیح کلی:
اگر می خواید درون datagrid نشون بده باید یک Table در sql بسازید که اصطلاحاً بهش می گن جدول کدینگ
که در این جدول ID,Des (آیدی و شرح) ذخیره میشه مثلاً آیدی: 1 - شرح: پایه اول و ...
و در جدول اصلی فقط ID رو میزارید که به عنوان کلید خارجی (ForeignKey) هست و به این جدول Join میکنید
موفق باشید

mbaneshi
چهارشنبه 26 مهر 1396, 11:59 صبح
درود. ممنون از توجه شما. جدول از قبل آماده توی sql هست. (ولی پایه دانش اموز با کد ذخیره شده و شرحش در یه جدول دیگه هست) توی #c فرم و دیتاگرید ویو هم ساختم و اطلاعات جدول رو لود میکنه. من می خوام وقتی اطلاعات جدول لود میشه به جای کد 1 نمایش بده "پایه اول"

danialafshari
چهارشنبه 26 مهر 1396, 13:39 عصر
با سلام
همونطور که عرض کردم باید Inner Join بشن
یک مثال:
(جدول بهینه نیست و صرفاً یک مثال برای درک بهتر شماست)
شما یک همچین چیزی رو می خواید

146821

شما باید یک کوئری شبیه به این رو در برنامتون فراخوانی کنید
دانش آموزان در جدول Student به صورت کد و در جدول دیگر مشخصاتشون هست
موفق باشید
موفق باشید

javad.jaddi
پنج شنبه 27 مهر 1396, 09:54 صبح
سلام
درون خود sql server در بانک اطلاعاتی مربوطه یک view بساز و جدول مربوط به اطلاعات دانش آموزان رو بیار
بعد یه دستور آخرش اضافه کن


(select case when [نام ستون مورد نظر]= '1' then 'پایه اول' when [ستون موردنظر]='2' then 'پایه دوم' ... end)

بعد درون سی شارپ به جای اینکه از جدول استفاده کنی و درون گرید نمایش بدی، از view که ساختی استفاده کن

danialafshari
شنبه 29 مهر 1396, 03:44 صبح
سلام
درون خود sql server در بانک اطلاعاتی مربوطه یک view بساز و جدول مربوط به اطلاعات دانش آموزان رو بیار
بعد یه دستور آخرش اضافه کن


(select case when [نام ستون مورد نظر]= '1' then 'پایه اول' when [ستون موردنظر]='2' then 'پایه دوم' ... end)

بعد درون سی شارپ به جای اینکه از جدول استفاده کنی و درون گرید نمایش بدی، از view که ساختی استفاده کن

با سلام
دوست عزیز این روش شما برای زمانی هست که هم مقدار فیلد مشخص باشد و هم تعداد فیلد!
در صورتی که رکورد های ایشون به تعداد نا مشخص و به نام های مختلف و غیر قابل پیش بینی هستن
ولی روش شما برای زمانی هست که تعداد و مقدار مشخص باشند مثلاً به جای نمایش 0 و 1 نشون بده : بله و غیر. و امثالهم
موفق باشید

mbaneshi
شنبه 29 مهر 1396, 21:16 عصر
درود.
ممنون از راهنمایی شما.
دوست گرامی راهنمای شما کارساز بود و با کمی تغییر در کد توانستم به نتیجه مطلوب برسم و هنگام لود شدن اطلاعات دیتاگرید ویو به جای عدد یک پایه اول نمایش داده شد. من کد زیر را نوشتم :

end FROM dbo.students'پایه اول 'cmd.CommandText = "SELECT studentcode,sex, CASE WHEN ExamModel = '1' THEN


حالا یه سوال دیگه. من می خوام توی همین دیتا گرید ویو علاوه بر پایه به جای عدد 1 و 2 در فیلد sex ، جنسیت هم به صورت فارسی نمایش بدم.
کد ها رو هم خیلی تغییر دادم ولی به نتیجه نرسیدم.

danialafshari
یک شنبه 30 مهر 1396, 01:22 صبح
با سلام
لطفاً از قالب بندی های زبان های برنامه نویسی سایت(C#‎) و بصورت کد، بجای قرار دادن عکس استفاده کنید
زبانش شبیه به پاسکال و ویژوال بیسیک هست
به جای sex کدی شبیه این قرار بدید

SELECT IDStudent, CASE WHEN [sex] = '1' THEN 'مرد' ELSE 'زن' END AS sex
FROM dbo.Students

موفق باشید

mbaneshi
یک شنبه 30 مهر 1396, 21:54 عصر
ممنون. فکر کنم من نتونستم منظور خودمو درست بیان کنم.
منظور من اینه که من می خوام هنگام لود شدن دیتا گرید ویو با دو تا و بیشتر فیلد این کار رو انجام بدم. یعنی این کد رو طوری بنویسم که وقتی گرید ویو من لود میشه در ستون پایه مثلا به جای عدد یک پایه اول و در ستون sex به جای عدد1 مرد و یا زن نشان داده شود.

danialafshari
یک شنبه 30 مهر 1396, 23:58 عصر
با سلام
همون اول گفتم راه اصولیش اینه که از Inner Join طبق توضیحات بالا و عکس بالا استفاده کنید
ولی اگر تعداد مشخص هست پست 5 و 8 راه ترکیب کنید
مثال:

SELECT CASE WHEN [IDStudent] = '1' THEN 'پایه اول' WHEN [IDStudent] = '2' THEN 'پایه دوم' WHEN [IDStudent] = '3' THEN 'پایه سوم' END AS Payeh,
CASE WHEN [sex] = '1' THEN 'مرد' ELSE 'زن' END AS sex
FROM dbo.Students

به جای OtherField... هم فیلدهای دیگر را بزارید و با , حداشون کنید
برای هنگام لود شدن هم کوئری بالا رو به CommandText در FormLoad بدید
موفق باشید

mohammadnavid
شنبه 14 تیر 1399, 12:00 عصر
با سلام من یه سوال داشتم من یه جدول لیگ برتر طراحی کردم که جدول رو داخل dgv لود کردم حالا می خوام هر تیمی که اول بود یعنی تو اولین خط بود یه فیلد توی dgv هست که می خوام اون بشه یک و همینطور تیم دوم فیلد رتبش بشه 2

mohammadnavid
شنبه 14 تیر 1399, 12:03 عصر
سلام وقت شما بخیر من یه جدول لیگ برتر طراحی کردم و اطلاعاتشم توی dgv بالا اوردم حالا می خوام هر تیمی که اومد توی خط اول یه فیلد درس کردم واسش اون بشه 1 و همینطور بقیه ی تیمی که در خط دوم هست رتبش بشه 2

silver189
یک شنبه 15 تیر 1399, 13:06 عصر
این روش رو هم می تونی امتحان کنید

for (int i = 0; i < dataGridView1.Rows.Count - 0; i++)
{
string temp = dataGridView1.Rows[i].Cells[2].Value.ToString();
if (temp == "MALE")
{
dataGridView1.Rows[i].Cells[2].Value = "آقا";
}
else if (temp == "FEMALE")
{
dataGridView1.Rows[i].Cells[2].Value = "خانم";
}
}