نوشته شده توسط
misagh.sys
با سلام خدمت دوستان و مهندسین بزرگوار
سوالی داشتم خدمتتون میخواستم لطف کنید و جواب بدین
نرم افزرای برای یک شرکت ساختمانی طراحی کردم که یکسری اطلاعات برای مثال نوع سقف ، نوع کفپوش و ....... به عنوان ورودی اولیه از کاربر دریافت میکنه
که جدول تمام اطلاعات پایه دو تا فیلد بیشتر نداره ID و subject
من در زمان ثبت سفارش فقط ID هر کدوم از پارامترهایی که نیاز داشته باشم را داخل جدول ثبت سفارش ذخیره میکنم اما عنوان را دحیره نمیکنم
الان موقع نمایش اطلاعات داخل دیتاگرید مشکل دارم
من ID رکوردهام را ذخیره کردم الان میخوام عنوان اون Id را داخل دیتاگرید موقع نمایش یا جستجوی سفارش بهم نشون بده
چکار باید بکنم ؟
اصلا کاری که کردم درست هست ؟
ممنن میشم جواب بدین
شما هم می توانید موقع خواندن از پایگاه داده با دستور SQL اون ID رو با Subject اش جایگزین کنید (INNER JOIN) و هم می توانید موقع نمایش در DataGridView تبدیل رو انجام بدید.
برای تبدیل سریع id به subject در کدتون می توانید یک <Dictionary<int, string تعریف کنید که ابتدای برنامه همه اون id ها و subject شون رو ذخیره کنه تا موقع نمایش سریع id بگیره و subject تحویل بده.
مثلا :
private Dictionary<int, string> _subjects = new Dictionary<int, string>();
private void Form1_Load(object sender, EventArgs e)
{
var dataTable = new DataTable();
// Fill DataTable...
foreach (DataRow row in dataTable.Rows)
{
_subjects.Add((int)row["id"], (string)row["subject"]);
}
}
و در DataGridView شما می توانید مشخص کنید که میخوام در ستون فلان (مثلا ستون اندیس 1) بجای id که واقعا قرار دادم، فلان عبارت string، مثلا subject اش نمایش داده بشه :
private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (e.ColumnIndex == 1)
{
string subject;
if (_subjects.TryGetValue(int.Parse(e.Value.ToString( )), out subject) == false)
{
subject = "نامشخص";
}
e.Value = subject;
e.FormattingApplied = true;
}
}