title: datagridview not allowing user to delete row
body: <p>I have a datagridview bound to a datatable.  The columns are not autogenerated, I create them in code.  I want my user's to be able to add and delete a row, so I have AllowUserToAddRows = true, AllowUserToDeleteRows = true.</p>
  
  <p>The problem is: when they select a row and press DEL, the information is replaced by the row cell's default values.  The row does not go away. </p>
  
  <p>What is this behavior (why/what is happening), and how can I get around it?</p>
  
  <p>Here is my grid creation code:</p>
  
  <pre><code>    private void resetDowntimeGrid()
      {
          downtimeEntries = new DataTable();
  
          downtimeEntries.Columns.Add("Category", typeof(int));
          downtimeEntries.Columns.Add("HoursDown");
          downtimeEntries.Columns.Add("Reason");
  
          //deptDowntimeCategories.Select("", "ListOrder ASC");
  
          gridDowntime.Columns.Clear();
  
          DataGridViewComboBoxColumn cboCategory = new DataGridViewComboBoxColumn();
          {
              cboCategory.HeaderText = "Category";
              cboCategory.DataSource = deptDowntimeCategories;
              cboCategory.DisplayMember = "Name";
              cboCategory.ValueMember = "CategoryID";
              cboCategory.DataPropertyName = "Category";
              cboCategory.Width = Convert.ToInt16(gridDowntime.Width * 0.20);
              cboCategory.DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox;
              cboCategory.AutoComplete = true;
  
              gridDowntime.Columns.Add(cboCategory);
          }
  
          DataGridViewTextBoxColumn txtDowntime = new DataGridViewTextBoxColumn();
          txtDowntime.HeaderText = "HoursDown";
          txtDowntime.DataPropertyName = "HoursDown";
          txtDowntime.Width = Convert.ToInt16(gridDowntime.Width * 0.15);
          gridDowntime.Columns.Add(txtDowntime);
  
          DataGridViewTextBoxColumn txtReason = new DataGridViewTextBoxColumn();
          txtReason.HeaderText = "Reason";
          txtReason.DataPropertyName = "Reason";
          txtReason.Width = Convert.ToInt16(gridDowntime.Width * 0.60);
          gridDowntime.Columns.Add(txtReason);
  
          gridDowntime.DataSource = downtimeEntries;
  
          lblStatus.Text = "Downtime grid reset.";
      }
  </code></pre>