PDA

View Full Version : سوال: پر کردن CheckListBox از دیتای مربوطه از دیتابیس (درحالت ویرایش)



mahdibham
پنج شنبه 01 دی 1401, 18:13 عصر
سلام و وقت بخیر

قبل از عنوان کردن سوال اصلی یک موضوعی رو میخواستم مطرح کنم و ببینم براش راه حلی هست یا خیر:
در تصویر زیر داخل یک فرم، متقاضی با دو نحوه پر کردن مواجه هست و اول فقط یک گزینه رو میتونه تیک بزنه و دوم چندتا گزینه با هم رو میتونه تیک بزنه.. مشکل در چند انتخابی هست و از اینجا شروع میشه که نمیخوام از checklistbox استفاده کنم و میخوام به صورت تک checklist ارائه بدم و مطابق با فرم اصلی در تصویر زیر در طراحی برنامه بیارم.

154384

ولی نمیدونم در هنگام بازخوانی اینها از دیتابیس برای نمایش در فرم در حالت ویرایش چطور این چک باکس ها رو به ترتیبی که پر کرده، پر کنم.
ممنون میشم راهنمایی کنید..
اما سوال اصلی هم مربوط به همین هست که اگر بخوام checklistbox استفاده کنم و همانطور مانند قبلی بخوام در حالت ویرایش فرم اون ها رو به ترتیبی که پر شده، پر کنم، چطور باید این خوانش دیتارو انجام بدم.. ؟؟

ROSTAM2
پنج شنبه 01 دی 1401, 19:47 عصر
سلام و وقت بخیر

قبل از عنوان کردن سوال اصلی یک موضوعی رو میخواستم مطرح کنم و ببینم براش راه حلی هست یا خیر:
در تصویر زیر داخل یک فرم، متقاضی با دو نحوه پر کردن مواجه هست و اول فقط یک گزینه رو میتونه تیک بزنه و دوم چندتا گزینه با هم رو میتونه تیک بزنه.. مشکل در چند انتخابی هست و از اینجا شروع میشه که نمیخوام از checklistbox استفاده کنم و میخوام به صورت تک checklist ارائه بدم و مطابق با فرم اصلی در تصویر زیر در طراحی برنامه بیارم.

154384

ولی نمیدونم در هنگام بازخوانی اینها از دیتابیس برای نمایش در فرم در حالت ویرایش چطور این چک باکس ها رو به ترتیبی که پر کرده، پر کنم.
ممنون میشم راهنمایی کنید..
اما سوال اصلی هم مربوط به همین هست که اگر بخوام checklistbox استفاده کنم و همانطور مانند قبلی بخوام در حالت ویرایش فرم اون ها رو به ترتیبی که پر شده، پر کنم، چطور باید این خوانش دیتارو انجام بدم.. ؟؟

؟؟؟ چرا باید ترتیب مهم باشه؟! برای هر کدوم باید ی عنوان مشخص داشته باشی در غیر اینصورت نمی تونی از مقادیر ثبت شده در جاهای دیگه از برنامه استفاده کنی.

mahdibham
شنبه 03 دی 1401, 09:50 صبح
؟؟؟ چرا باید ترتیب مهم باشه؟! برای هر کدوم باید ی عنوان مشخص داشته باشی در غیر اینصورت نمی تونی از مقادیر ثبت شده در جاهای دیگه از برنامه استفاده کنی.

ببخشید متوجه منظورتون نشدم.. ترتیب رو به این خاطر اوردم که فکر میکنم در بازخوانی از دیتابیس مهم باشه که بخوام در هنگام ویرایش همون هایی که انتخاب شده رو، انتخاب شده، بالا بیارم.
این موضوع هم دقت بفرمایید که بنده نحوه ی ذخیره چک باکس ها در دیتابیس هم سوال دارم که دقیقا باید چطور باشه؟ برای هر کدوم از یک چک باکس یک ستون جدا باشه که خیلی زیاد میشه و مطلوب نیست یا اینکه هر چکباکس رو صفر و یکی در نظر بگیریم و از لحاظ باینری یک عددی حاصلشون میشه که در دیکود کردن وقتی اون صفر و یک برمیگرده مشخص میشه که کدوم پر هست و کدوم خالی هست.

ROSTAM2
شنبه 03 دی 1401, 10:44 صبح
ببخشید متوجه منظورتون نشدم.. ترتیب رو به این خاطر اوردم که فکر میکنم در بازخوانی از دیتابیس مهم باشه که بخوام در هنگام ویرایش همون هایی که انتخاب شده رو، انتخاب شده، بالا بیارم.
این موضوع هم دقت بفرمایید که بنده نحوه ی ذخیره چک باکس ها در دیتابیس هم سوال دارم که دقیقا باید چطور باشه؟ برای هر کدوم از یک چک باکس یک ستون جدا باشه که خیلی زیاد میشه و مطلوب نیست یا اینکه هر چکباکس رو صفر و یکی در نظر بگیریم و از لحاظ باینری یک عددی حاصلشون میشه که در دیکود کردن وقتی اون صفر و یک برمیگرده مشخص میشه که کدوم پر هست و کدوم خالی هست.

اگر مقادیر هیچ استفاده دیگه ای نداشته باشه و دکوری باشه بله. این راه درسته. ولی در صورتی که بخواهید از مقادیر چک باکس ها استفاده کنید در برنامه چطور باید شرط گذاری بشه؟

ROSTAM2
شنبه 03 دی 1401, 11:31 صبح
نحوه ی ذخیره چک باکس ها در دیتابیس هم سوال دارم که دقیقا باید چطور باشه؟

می تونید از Enumerations کمک بگیرید و عناصر اون رو Flag قرار بدید تا محاسبه دقیق داشته باشید.
https://learn.microsoft.com/en-us/dotnet/api/system.flagsattribute?view=net-7.0

و مقادیر چک باکس ها رو طبق اجزای Enum تعیین کنید تا دسترسی به اون ساده تر باشه.

خوبیش اینه که مقادیر با هم جمع می شه و یک عدد برای ذخیره دارید و زمان بازخوانی می شه از همون یک عدد همه چک باکس ها که قبلا برای ایجاد همون عدد انتخاب شده بودند رو فعال و می تونید از همون عدد در هر جایی از برنامه استفاده کنید(در اصل از Enumeration استفاده می کنید.)

mahdibham
شنبه 03 دی 1401, 14:11 عصر
می تونید از Enumerations کمک بگیرید و عناصر اون رو Flag قرار بدید تا محاسبه دقیق داشته باشید.
https://learn.microsoft.com/en-us/dotnet/api/system.flagsattribute?view=net-7.0

و مقادیر چک باکس ها رو طبق اجزای Enum تعیین کنید تا دسترسی به اون ساده تر باشه.

خوبیش اینه که مقادیر با هم جمع می شه و یک عدد برای ذخیره دارید و زمان بازخوانی می شه از همون یک عدد همه چک باکس ها که قبلا برای ایجاد همون عدد انتخاب شده بودند رو فعال و می تونید از همون عدد در هر جایی از برنامه استفاده کنید(در اصل از Enumeration استفاده می کنید.)

جالب بود استفاده کردم ولی مشکلش این هست که، مثلا نمونه ی لینکی که ارسال کردید رو مثال بزنم، اینه که مثلا اگر پنج تا چکباکس داشته باشم و کاربر همش رو پر کنه برای خوندن از دیتابیس باید شانزده تا سوییچ کیس بذارم که مطلوب نیست واقعا.. و اون حالتی که خودم گفتم صفر و یکیش کنیم یکم راحت تر هست.
همه این موارد برای ثبت داده خوب هست ولی مشکل همین خوندن از دیتابیس هست.. واقعا هیچ راهی به ذهنم نمیرسه چطور وقتی میخوام از دیتابیس بخونمشون توی برنامه اجراشون کنم.

ROSTAM2
شنبه 03 دی 1401, 22:34 عصر
جالب بود استفاده کردم ولی مشکلش این هست که، مثلا نمونه ی لینکی که ارسال کردید رو مثال بزنم، اینه که مثلا اگر پنج تا چکباکس داشته باشم و کاربر همش رو پر کنه برای خوندن از دیتابیس باید شانزده تا سوییچ کیس بذارم که مطلوب نیست واقعا.. و اون حالتی که خودم گفتم صفر و یکیش کنیم یکم راحت تر هست.
همه این موارد برای ثبت داده خوب هست ولی مشکل همین خوندن از دیتابیس هست.. واقعا هیچ راهی به ذهنم نمیرسه چطور وقتی میخوام از دیتابیس بخونمشون توی برنامه اجراشون کنم.

این تاپیک رو ببین سوالی داشتی بپرس: گفتگو: ذخیره و بازیابی آیتمهای انتخاب شده از یک مجموعه CheckBox (barnamenevis.org) (https://barnamenevis.org/showthread.php?572284-%D8%B0%D8%AE%DB%8C%D8%B1%D9%87-%D9%88-%D8%A8%D8%A7%D8%B2%DB%8C%D8%A7%D8%A8%DB%8C-%D8%A2%DB%8C%D8%AA%D9%85%D9%87%D8%A7%DB%8C-%D8%A7%D9%86%D8%AA%D8%AE%D8%A7%D8%A8-%D8%B4%D8%AF%D9%87-%D8%A7%D8%B2-%DB%8C%DA%A9-%D9%85%D8%AC%D9%85%D9%88%D8%B9%D9%87-CheckBox&p=2455112#post2455112)

mahdibham
دوشنبه 05 دی 1401, 11:50 صبح
ممنون . :قلب:

mahdibham
یک شنبه 11 دی 1401, 12:25 عصر
این تاپیک رو ببین سوالی داشتی بپرس: گفتگو: ذخیره و بازیابی آیتمهای انتخاب شده از یک مجموعه CheckBox (barnamenevis.org) (https://barnamenevis.org/showthread.php?572284-%D8%B0%D8%AE%DB%8C%D8%B1%D9%87-%D9%88-%D8%A8%D8%A7%D8%B2%DB%8C%D8%A7%D8%A8%DB%8C-%D8%A2%DB%8C%D8%AA%D9%85%D9%87%D8%A7%DB%8C-%D8%A7%D9%86%D8%AA%D8%AE%D8%A7%D8%A8-%D8%B4%D8%AF%D9%87-%D8%A7%D8%B2-%DB%8C%DA%A9-%D9%85%D8%AC%D9%85%D9%88%D8%B9%D9%87-CheckBox&p=2455112#post2455112)

حالا اگر بخوایم مثلا توی ی دونه از گریدویو ها مثلا اسم ی دونه از چک باکسی که تیک خورده رو نمایش بدیم چکار باید کرد؟
من برای عنوان مطلب که به اسم Topic گذاشتمش، چک باکس قرار دادم. حالا میخوام توی یکی از گریدویو هام در کنار ستون های دیگه موضوع رو هم نشون بده.. میخوام هر کدوم از چک باکس ها که به عنوان موضوع تیک خورده، اسمش توی ستون خودش نمایش داده بشه.
وقتی موضوع به صورت تکست باکس بود به صورت زیر بایندش کردم ولی الان که چک باکسش کردم نمیدونم چطوره؟


public void BindDataGridViewHoleFileInformation ()
{

dgvHoleInformation.DataSource = (from p in emdadDB.TblFiles
join c in emdadDB.TblDependents.Where (p => p.FamilyRelationshipId == 11) on p.Id equals c.FileId into joined
from t in joined.DefaultIfEmpty ()
//join x in emdadDB.TblFamilyRelationships on p.Relation equals x.Id
select new
{
p.Id,
p.FileNumber,
t.FullName,
p.Topic

}).OrderBy (p => p.FileNumber).ToList ();

}


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

ROSTAM2
یک شنبه 11 دی 1401, 13:39 عصر
حالا اگر بخوایم مثلا توی ی دونه از گریدویو ها مثلا اسم ی دونه از چک باکسی که تیک خورده رو نمایش بدیم چکار باید کرد؟
من برای عنوان مطلب که به اسم Topic گذاشتمش، چک باکس قرار دادم. حالا میخوام توی یکی از گریدویو هام در کنار ستون های دیگه موضوع رو هم نشون بده.. میخوام هر کدوم از چک باکس ها که به عنوان موضوع تیک خورده، اسمش توی ستون خودش نمایش داده بشه.
وقتی موضوع به صورت تکست باکس بود به صورت زیر بایندش کردم ولی الان که چک باکسش کردم نمیدونم چطوره؟


public void BindDataGridViewHoleFileInformation ()
{

dgvHoleInformation.DataSource = (from p in emdadDB.TblFiles
join c in emdadDB.TblDependents.Where (p => p.FamilyRelationshipId == 11) on p.Id equals c.FileId into joined
from t in joined.DefaultIfEmpty ()
//join x in emdadDB.TblFamilyRelationships on p.Relation equals x.Id
select new
{
p.Id,
p.FileNumber,
t.FullName,
p.Topic

}).OrderBy (p => p.FileNumber).ToList ();

}


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

سلام.
سوال واضح نیست!
با رسم شکل توضیح دهید. (5 نمره)
منظورت اینه که خروجی قابل نمایش در دیتاگرید ویو دارید و می خواهید یک خانه از گرید رو اختصاص بدید به نام چک باکس های انتخابی یا اینکه خانه های دیتاگریدویو که مدنظر هست از نوع CheckBox هست؟

در مثالی که داشتیم یک خصوصیت عمومی وجود داشت (Language) که اگر به رشته تبدیل بشه مقادیر بصورت متنی نمایش داده می شه.

mahdibham
یک شنبه 11 دی 1401, 13:44 عصر
سلام.
سوال واضح نیست!
با رسم شکل تویضیح دهید. (5 نمره)
منظورت اینه که خروجی قابل نمایش در دیتاگرید ویو دارید و می خواهید یک خانه از گرید رو اختصاص بدید به نام چک باکس های انتخابی یا اینکه خانه های دیتاگریدویو که مدنظر هست از نو CheckBox هست؟

در مثالی که داشتیم یک خصوصیت عمومی داشتیم Languages که اگر به رشته تبدیل بشه مقادیر بصورت متنی نمایش داده می شه.

:لبخند::قهقهه:
دقیقا قسمت اول سوال شما میشه سوال من.
یک ستون از گریدویو رو میخوام اختصاص بدم به موضوع که داخل سلول اون "اسم" چکباکس انتخاب شده قرار میگیره.

ROSTAM2
یک شنبه 11 دی 1401, 13:57 عصر
یعنی فیلد Topic مقدار چک باکس ها رو گرفته؟

mahdibham
یک شنبه 11 دی 1401, 14:33 عصر
یعنی فیلد Topic مقدار چک باکس ها رو گرفته؟

اینو متوجه نشدم منظورتون چی هست!!
برنامه وقتی ران میشه ورودی موضوع به شکل زیر هست: که موضوع عمدتا از یکی از همین چکباکس ها انتخاب میشه و انتخاب دیگری نیست ولی گاها امکان دارد موضوع دیگری هم باشد که در تکست باکس با عنوان سایرموضوعات درج میشه.

154407

حالا میخوام در شکل زیر که گریدویوی من هست و در اول اجرای برنامه قبل از هرچیزی دیده میشه این موضوعات در ستون سمت چپی مشاهده بشه.
برای نمایش اون چیزی که در تکست باکس نوشته میشه مشکلی نیست .. مشکل از جایی هست که وقتی چکباکس ها انتخاب میشه، چطور اسم هر چکباکس در اون ردیف گریدویو نمایش داده بشه؟؟؟؟

154408

یعنی با انتخاب هر چکباکس، text همون چکباکس در ردیف مربوطه در گریدویو نمایش داده بشه.

ROSTAM2
یک شنبه 11 دی 1401, 17:38 عصر
اینو متوجه نشدم منظورتون چی هست!!
برنامه وقتی ران میشه ورودی موضوع به شکل زیر هست: که موضوع عمدتا از یکی از همین چکباکس ها انتخاب میشه و انتخاب دیگری نیست ولی گاها امکان دارد موضوع دیگری هم باشد که در تکست باکس با عنوان سایرموضوعات درج میشه.

154407

حالا میخوام در شکل زیر که گریدویوی من هست و در اول اجرای برنامه قبل از هرچیزی دیده میشه این موضوعات در ستون سمت چپی مشاهده بشه.
برای نمایش اون چیزی که در تکست باکس نوشته میشه مشکلی نیست .. مشکل از جایی هست که وقتی چکباکس ها انتخاب میشه، چطور اسم هر چکباکس در اون ردیف گریدویو نمایش داده بشه؟؟؟؟

154408

یعنی با انتخاب هر چکباکس، text همون چکباکس در ردیف مربوطه در گریدویو نمایش داده بشه.

سوال اینه که چ زمانی سایر موضوعات بکار می ره؟ زمانی که هیچ کدام از آیتمهای دیگه انتخاب نیست؟ یا همزمان با آیتم های دیگه قابل مقدار دهی هست؟
در مورد بقیه چک باکس ها هم همین سوال وجود داره! قابلیت انتخاب چندگانه دارن؟

mahdibham
یک شنبه 11 دی 1401, 18:06 عصر
سوال اینه که چ زمانی سایر موضوعات بکار می ره؟ زمانی که هیچ کدام از آیتمهای دیگه انتخاب نیست؟ یا همزمان با آیتم های دیگه قابل مقدار دهی هست؟
در مورد بقیه چک باکس ها هم همین سوال وجود داره! قابلیت انتخاب چندگانه دارن؟

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

ROSTAM2
یک شنبه 11 دی 1401, 20:23 عصر
"سایر موضوعات" زمانی به کار میره که هیچ یک از آیتم ها از چکباکس ها انتخاب نشده.(همزمان با آیتم های دیگه مقدار دهی نمیشه)
در مورد انتخاب چک باکس ها: فقط یک چکباکس قابل انتخاب شدن داره.. (انتخاب چندگانه نداریم.)
خوب پس چرا RadioButton استفاده نکردی؟!
از اونجایی که یک آیتم قابل انتخاب هست می تونی از یک Enumeration بدون خاصیت Flag بودن اجزاش استفاده کنی. هر آیتم که انتخاب می شه فقط یک مقدار خاص می گیره و مقدار اتریبیوت متن هر جزء از enum هم بعنوان متن در گرید ویو نمایش داده می شه.

در این صورت خود سایر موضوعات هم باید قابلیت انتخاب داشته باشه البته باید یک فیلد مجزا باید برای اون در نظر بگیرید(برای متنش). ولی بقیه متنشون از اتریبیوت اجزای enum دریافت می کنند چون ثابت هستند.

public enum Subjects
{
[Description("سایر موضوعات")]None = 0,
[Description("‎‎‎‎‎‎‎‎‎‎مسکن")]Maskan=1,
[Description("وضعیت معاش")]Maash =2,
[Description("جهیزیه")]Jahaz=3,
[Description("درمان")]Darman =4,
[Description("بدهی")]Bedehi =5,
}


اگه None باشه سایر موضوعات هست و فیلدی که براش بصورت مجزا در نظر گرفته شده مقدار جعبه متن رو می گیره.

mahdibham
دوشنبه 12 دی 1401, 10:54 صبح
خوب پس چرا RadioButton استفاده نکردی؟!
از اونجایی که یک آیتم قابل انتخاب هست می تونی از یک Enumeration بدون خاصیت Flag بودن اجزاش استفاده کنی. هر آیتم که انتخاب می شه فقط یک مقدار خاص می گیره و مقدار اتریبیوت متن هر جزء از enum هم بعنوان متن در گرید ویو نمایش داده می شه.

در این صورت خود سایر موضوعات هم باید قابلیت انتخاب داشته باشه البته باید یک فیلد مجزا باید برای اون در نظر بگیرید(برای متنش). ولی بقیه متنشون از اتریبیوت اجزای enum دریافت می کنند چون ثابت هستند.

public enum Subjects
{
[Description("سایر موضوعات")]None = 0,
[Description("‎‎‎‎‎‎‎‎‎‎مسکن")]Maskan=1,
[Description("وضعیت معاش")]Maash =2,
[Description("جهیزیه")]Jahaz=3,
[Description("درمان")]Darman =4,
[Description("بدهی")]Bedehi =5,
}


اگه None باشه سایر موضوعات هست و فیلدی که براش بصورت مجزا در نظر گرفته شده مقدار جعبه متن رو می گیره.

اصلا حواسم به RadioButton نبود البته تا حالا این استفاده رو ازش نکرده بودم. خیلی هم عالی.
فقط چرا اصلا از سایر استفاده کنم اون رو میشه کلا ی ابجکت جدا گرفت دیگه.. جدا هم ثبت میشه و دریافت میشه. نمیشه؟
بعد ی چیزی.. برای نمایش دادنش توی گریدویو که باید جوین بزنم با جدول فایل اینارو توی اون کوئری چطور باید بیارم..

public void BindDataGridViewHoleFileInformation ()
{

dgvHoleInformation.DataSource = (from p in emdadDB.TblFiles
join c in emdadDB.TblDependents.Where (p => p.FamilyRelationshipId == 11) on p.Id equals c.FileId into joined
from t in joined.DefaultIfEmpty ()
//join x in emdadDB.TblFamilyRelationships on p.Relation equals x.Id
select new
{
p.Id,
p.FileNumber,
t.FullName,
p.Topic

}).OrderBy (p => p.FileNumber).ToList ();

}

ROSTAM2
دوشنبه 12 دی 1401, 22:24 عصر
اصلا حواسم به RadioButton نبود البته تا حالا این استفاده رو ازش نکرده بودم. خیلی هم عالی.
فقط چرا اصلا از سایر استفاده کنم اون رو میشه کلا ی ابجکت جدا گرفت دیگه.. جدا هم ثبت میشه و دریافت میشه. نمیشه؟
بعد ی چیزی.. برای نمایش دادنش توی گریدویو که باید جوین بزنم با جدول فایل اینارو توی اون کوئری چطور باید بیارم..

public void BindDataGridViewHoleFileInformation ()
{

dgvHoleInformation.DataSource = (from p in emdadDB.TblFiles
join c in emdadDB.TblDependents.Where (p => p.FamilyRelationshipId == 11) on p.Id equals c.FileId into joined
from t in joined.DefaultIfEmpty ()
//join x in emdadDB.TblFamilyRelationships on p.Relation equals x.Id
select new
{
p.Id,
p.FileNumber,
t.FullName,
p.Topic

}).OrderBy (p => p.FileNumber).ToList ();

}






دیتابیس چیه؟! و چرا از LINQ استفاده کردی من می خواستم کد رو بدون استفاده از دیتابیس بازسازی کنم نشد از LINQ به درستی استفاده کنم!! و از کلاس DataTable استفاده کردم.
154414

namespace AuthorProfileManagerCS
{


public enum Experiences {
[DisplayValue("I'm New")]None = 0,
[DisplayValue("1 - 4 years")]GroupA = 1,
[DisplayValue("5 - 10 years")]GroupB = 2,
[DisplayValue("10 - 20 years")]GroupC = 3,
[DisplayValue("More than 20 years")]GroupD = 4


};
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);


Application.Run(new MainForm());

}
}
}


MainForm:

using System;
using System.Data;
using System.Linq;
using System.Windows.Forms;


namespace AuthorProfileManagerCS
{

public partial class MainForm : Form
{
public Experiences Experience { get; set; }
public MainForm()
{
InitializeComponent();


// Create AuthorsDataTable Columns:------------------------------


var Table = new DataTable
{
TableName = "Authors"
};
Table.Columns.Add(new DataColumn("ID", typeof(Guid)));
Table.Columns.Add(new DataColumn("FirstName", typeof(string)));
Table.Columns.Add(new DataColumn("LastName", typeof(string)));
Table.Columns.Add(new DataColumn("Mail", typeof(string)));
Table.Columns.Add(new DataColumn("Phone", typeof(string)));
Table.Columns.Add(new DataColumn("Fax", typeof(string)));
Table.Columns.Add(new DataColumn("Country", typeof(string)));
Table.Columns.Add(new DataColumn("Address", typeof(string)));
Table.Columns.Add(new DataColumn("Experience", typeof(string)));
this.Table = Table;
//----------------------------------------------------------------


}


public DataTable Table { get; set; }


public void CreateData()
{
Guid ID = Guid.NewGuid();
String FirstName = "ROSTAM", LastName = "F*********",
Mail = "vloverprogrammer@gmail.com", Phone= "0936******" , Fax = "NAN", Country="Iran", Address="Fars";
Experience = Experiences.GroupA;


DisplayValueAttribute ExperienceAttr = (DisplayValueAttribute)typeof(Experiences)
.GetField(Experience.ToString())
.GetCustomAttributes(typeof(DisplayValueAttribute) , false)
.FirstOrDefault();

Table.Rows.Add(ID, FirstName, LastName, Mail, Phone, Fax, Country, Address, ExperienceAttr.Value);

}

private void MainForm_Load(object sender, EventArgs e)
{
CreateData();
this.DataGridView1.DataSource = Table;
}
}
}


DisplayValue Custom Attribute:

using System;


namespace AuthorProfileManagerCS
{
[AttributeUsage(AttributeTargets.Field)]
public class DisplayValueAttribute: Attribute
{

public DisplayValueAttribute(string value)
{
this.Value = value;
}
public string Value { get; set; }
}
}

mahdibham
سه شنبه 13 دی 1401, 10:05 صبح
دیتابیس چیه؟! و چرا از LINQ استفاده کردی من می خواستم کد رو بدون استفاده از دیتابیس بازسازی کنم نشد از LINQ به درستی استفاده کنم!! و از کلاس DataTable استفاده کردم.


دیتابیس که sql server هست ولی فکر کنم به خاطر net6. باشه که اینطور میشه از linq استفاده کرد.

Mahmoud.Afrad
شنبه 17 دی 1401, 07:51 صبح
من فکر کنم نیاز هست که موضوع یک جدول مجزا باشه.

mahdibham
شنبه 17 دی 1401, 10:05 صبح
من فکر کنم نیاز هست که موضوع یک جدول مجزا باشه.

اتفاقا به همین فکر کردم ولی توی همون جدول فایل همش رو یک ستون اختصاص دادم و اون چکباکس ها رو با بیت دریافت کردم و true و false اش رو توی کد مدیریت کردم. اینطور نیاز به جدول دیگه ای هم نیست.