معرفی
در اینجا نحوه نمایش داده ها در یک DataGrid تودرتو با استفاده از C# Windows Forms را شرح خواهم داد.
این برای مواردی که ما نیاز به نمایش محتوای / ردیف اصلی و فرزند داریم کاربرد دارد.
نمونه جدول دانش آموزی
در اینجا در این مثال ما لیستی از دانشجویان داریم و در داخل آن جزئیاتی از نمرات دانش آموز را داریم:
![](https://www.c-sharpcorner.com/UploadFile/deveshomar/nested-datagrid-in-C-Sharp-window-forms/Images/8.jpg)
هدف ما نمایش این نوع داده ها با استفاده از C# Windows Forms است.
مراحل و کد
- ابتدا باید جداول master و child را ایجاد کنیم.
- برای شناسایی رابطه بین جداول باید کلیدهای اصلی و خارجی را در جداول داشته باشیم.
- در اینجا ما در حال ایجاد یک جدول داده برای جداول اصلی و فرزند هستیم.
- میز استاد (دانشجو)
- //Parent table
- DataTable dtstudent = new DataTable();
- dtstudent.Columns.Add("Student_ID", typeof(int));
- dtstudent.Columns.Add("Student_Name", typeof(string));
- dtstudent.Columns.Add("Student_RollNo", typeof(string));
- میز کودک (نمرات دانش آموز)
- //Child table
- DataTable dtstudentMarks = new DataTable();
- dtstudentMarks.Columns.Add("Student_ID", typeof(int));
- dtstudentMarks.Columns.Add("Subject_ID", typeof(int));
- dtstudentMarks.Columns.Add("Subject_Name", typeof(string));
- dtstudentMarks.Columns.Add("Marks", typeof(int));
- درک رابطه بین جداول استاد و فرزند.
- به طور خلاصه.
- dtstudent.StudentID = dtstudentMarks.StudentID
- افزودن ردیف به جدول اصلی (جدول دانشجو).
- //Adding Rows
- dtstudent.Rows.Add(111, "Devesh", "03021013014");
- dtstudent.Rows.Add(222, "ROLI", "0302101444");
- dtstudent.Rows.Add(333, "ROLI Ji", "030212222");
- dtstudent.Rows.Add(444, "NIKHIL", "KANPUR");
- افزودن یک ردیف به جدول کودک (جدول نشانه های دانش آموز).
- // data for devesh ID=111
- dtstudentMarks.Rows.Add(111, "01","Physics", 99);
- dtstudentMarks.Rows.Add(111, "02","Maths", 77);
- dtstudentMarks.Rows.Add(111, "03","C#", 100);
- dtstudentMarks.Rows.Add(111, "01","Physics", 99);
- //data for ROLI ID=222
- dtstudentMarks.Rows.Add(222, "01", "Physics", 80);
- dtstudentMarks.Rows.Add(222, "02", "English", 95);
- dtstudentMarks.Rows.Add(222, "03", "Commerce", 95);
- dtstudentMarks.Rows.Add(222, "01", "BankPO", 99);
- اضافه کردن جداول اصلی و فرزند به مجموعه داده.
- DataSet dsDataset = new DataSet();
- dsDataset.Tables.Add(dtstudent);
- dsDataset.Tables.Add(dtstudentMarks);
- تعریف رابطه بین جداول master و فرزند.
- DataRelation Datatablerelation = new DataRelation("DetailsMarks", dsDataset.Tables[0].Columns[0], dsDataset.Tables[1].Columns[0], true);
- dsDataset.Relations.Add(Datatablerelation);
- موارد زیر اضافه کردن یک کنترل Datagrid در فرم های ویندوز را توضیح می دهد.
همانطور که در صفحه زیر میتوانیم یک دیتاگرید به فرمهای ویندوز اضافه کنیم.
در نوار ابزار کلیک راست کرده و مورد را انتخاب کنید.
- داده های الزام آور
- dataGrid1.DataSource = dsDataset.Tables[0];
- همه کدها با هم
- private void Form1_Load(object sender, EventArgs e)
- {
- //Parent table
- DataTable dtstudent = new DataTable();
- // add column to datatable
- dtstudent.Columns.Add("Student_ID", typeof(int));
- dtstudent.Columns.Add("Student_Name", typeof(string));
- dtstudent.Columns.Add("Student_RollNo", typeof(string));
- //Child table
- DataTable dtstudentMarks = new DataTable();
- dtstudentMarks.Columns.Add("Student_ID", typeof(int));
- dtstudentMarks.Columns.Add("Subject_ID", typeof(int));
- dtstudentMarks.Columns.Add("Subject_Name", typeof(string));
- dtstudentMarks.Columns.Add("Marks", typeof(int));
- //Adding Rows
- dtstudent.Rows.Add(111, "Devesh", "03021013014");
- dtstudent.Rows.Add(222, "ROLI", "0302101444");
- dtstudent.Rows.Add(333, "ROLI Ji", "030212222");
- dtstudent.Rows.Add(444, "NIKHIL", "KANPUR");
- // data for devesh ID=111
- dtstudentMarks.Rows.Add(111, "01","Physics", 99);
- dtstudentMarks.Rows.Add(111, "02","Maths", 77);
- dtstudentMarks.Rows.Add(111, "03","C#", 100);
- dtstudentMarks.Rows.Add(111, "01","Physics", 99);
- //data for ROLI ID=222
- dtstudentMarks.Rows.Add(222, "01", "Physics", 80);
- dtstudentMarks.Rows.Add(222, "02", "English", 95);
- dtstudentMarks.Rows.Add(222, "03", "Commerce", 95);
- dtstudentMarks.Rows.Add(222, "01", "BankPO", 99);
- DataSet dsDataset = new DataSet();
- //Add two DataTables in Dataset
- dsDataset.Tables.Add(dtstudent);
- dsDataset.Tables.Add(dtstudentMarks);
- DataRelation Datatablerelation = new DataRelation("DetailsMarks", dsDataset.Tables[0].Columns[0], dsDataset.Tables[1].Columns[0], true);
- dsDataset.Relations.Add(Datatablerelation);
- dataGrid1.DataSource = dsDataset.Tables[0];
- }
- حالا برای اجرای کد.
صفحه زیر را با ردیف های قابل گسترش در DataGrid دریافت خواهیم کرد.