افزودن Combobox در Datagridview

چهارشنبه 20 مرداد 1395

در این مقاله قصد داریم که مراحل اضافه کردن ComboBox درون Datagridview را در windows Form مورد بررسی قرار دهیم.

افزودن Combobox در Datagridview

اضافه کردن combobox درون Datagridview توسط  CellClick که رویداد Datagridview است.

مرحله 1:

اضافه کردن Window form و کشیدن و رها کردن Datagridview از  toolbox. 

مرحله2 :

ساختن دیتا برای اتصال Datagridview و comboboxes.

فرض کنید در کارمان ما به دو  comboboxes به نام های Description” و “PaidWith” نیاز داریم.

مااینجا به سه data tables نیاز داریم، یکی برای “Description” combo box,یکی برای “PaidWith” combobox،و table سوم برای ارتباط Datagridview.

/// <summary>  
      /// Get datatable of description.  
      /// </summary>  
      /// <returns></returns>  
      private DataTable GetDescriptionTable()  
      {  
          DataTable l_dtDescription = new DataTable();  
          l_dtDescription.Columns.Add("Description", typeof(string));  
          l_dtDescription.Columns.Add("Type", typeof(string));  
  
          l_dtDescription.Rows.Add("Lunch", "Expense");  
          l_dtDescription.Rows.Add("Dinner", "Expense");  
          l_dtDescription.Rows.Add("Breakfast", "Expense");  
          l_dtDescription.Rows.Add("Designing", "Service");  
          l_dtDescription.Rows.Add("Drawing", "Service");  
          l_dtDescription.Rows.Add("Paper", "Material");  
          l_dtDescription.Rows.Add("DrawingBoard", "Material");  
  
          return l_dtDescription;  
      }  
  
      /// <summary>  
      /// Get datatable of PaidWIth.  
      /// </summary>  
      /// <returns></returns>  
      private DataTable GetPaidWithTable()  
      {  
          DataTable l_dtPaidwith = new DataTable();  
          l_dtPaidwith.Columns.Add("PaidWith", typeof(string));  
          l_dtPaidwith.Columns.Add("Code", typeof(string));  
  
          l_dtPaidwith.Rows.Add("CreditCard", "CC");  
          l_dtPaidwith.Rows.Add("DebitCard", "DC");  
  
          return l_dtPaidwith;  
      }  
  
      /// <summary>  
      /// Get the data for grid.  
      /// </summary>  
      /// <returns></returns>  
      private DataTable GetGridTable()  
      {  
          DataTable l_dtGridTable = new DataTable();  
          l_dtGridTable.Columns.Add("PaidWith", typeof(string));  
          l_dtGridTable.Columns.Add("Description", typeof(string));  
  
          l_dtGridTable.Rows.Add("CreditCard", "Drawing");  
  
          return l_dtGridTable;  
      }  

مرحله3:

اتصال DataGridView با  datatable.

{  
           dgv.DataSource = GetGridTable();  
       }  

الان ما این کد ها را انجام دادیم.اگر ما application  را  run کنیم چیزی شبیه زیر میبینیم

هنگامی که کاربر روی سلول  Datagridview کلیک میکند اینجا ما به combobox  نیاز داریم.

مرحله 4:

اضافه کردنcombo box  در datagridview با رویداد CellClick.

private void dgv_CellClick(object sender, DataGridViewCellEventArgs e)  
     {  
         if (e.ColumnIndex > -1)  
         {  
             // Bind grid cell with combobox and than bind combobox with datasource.  
             DataGridViewComboBoxCell l_objGridDropbox = new DataGridViewComboBoxCell();  
  
             // Check the column  cell, in which it click.  
             if (dgv.Columns[e.ColumnIndex].Name.Contains("Description"))  
             {  
                 // On click of datagridview cell, attched combobox with this click cell of datagridview  
                 dgv[e.ColumnIndex, e.RowIndex] = l_objGridDropbox;  
                 l_objGridDropbox.DataSource = GetDescriptionTable(); // Bind combobox with datasource.  
                 l_objGridDropbox.ValueMember = "Description";  
                 l_objGridDropbox.DisplayMember = "Description";  
  
             }  
  
             if (dgv.Columns[e.ColumnIndex].Name.Contains("PaidWith"))  
             {  
                 dgv[e.ColumnIndex, e.RowIndex] = l_objGridDropbox;  
                 l_objGridDropbox.DataSource = GetPaidWithTable();  
                 l_objGridDropbox.ValueMember = "PaidWith";  
                 l_objGridDropbox.DisplayMember = "PaidWith";  
             }  
  
         }  
  
     } 

اگر ما برنامه را اجرا کنیم و روی Datagridview کلیک کنیم کد بالا combo box را به برنامه ما اصافه میکند و به شکل زیر به نمایش در می اید.

در خروجی برنامه خواهیم داشت :

آموزش سی شارپ

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان
  • C#.net
  • 2k بازدید
  • 4 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید