2015-03-04 4 views
0

Я не слишком много работал с DataGridViews в приложениях формы C#, поэтому мой подход - новобранец, я уверен. Любая помощь была бы потрясающей!Удалить строку и сохранить DataGridView

Моя форма отображает DataGridView для моей базы данных, и я хочу дать пользователю возможность удалить определенную выбранную строку и затем сохранить изменения.

Вот мой код:

private void btnDeleteCustomer_Click(object sender, EventArgs e) 
    { 
     foreach (DataGridViewRow item in this.dataGridView1.SelectedRows) 
     { 
      dataGridView1.Rows.RemoveAt(item.Index); 
      dataGridView1.SelectAll(); 

     } 
    } 

    private void btnSelectAll_Click(object sender, EventArgs e) 
    { 
     dataGridView1.SelectAll(); 
    } 

Я пытаюсь удалить выбранную строку, а затем выберите все остальные строки, а затем сохранить выбранные оставшиеся строки с нажатием одной кнопки. Я уверен, что есть лучший способ сделать это, но я не могу найти решение, которое работает. Благодаря!

+0

почему бы вам нужно выбрать все после удаления одной строки. Кроме того, что вы имеете в виду, сохраняя оставшиеся строки, сохраняете ли вы его в базе данных или в файле или просто пытаетесь обновить gridview. – faljbour

+0

Я выбираю все после удаления, потому что планирую сохранить выбранные строки обратно в базу данных, но я не уверен, как это сделать. –

+0

, но вам не нужно выбирать все, все, что вам нужно, это перебрать все оставшиеся строки и сохранить в базе данных, – faljbour

ответ

0

Я не вижу, что есть большая разница, но вы можете удалить строки по-разному, вы можете рассмотреть вопрос об использовании методов расширения для расширения функциональности DataGridView с легкостью, например:

public static class DataGridViewExtensions 
    { 
     public static void DeleteSelectedRows(this DataGridView dgv) 
     { 
      foreach (DataGridViewRow row in dgv.SelectedRows) 
       dgv.Rows.Remove(row); 
     } 
    } 

И вы могли бы просто назвать эту функцию как этот

dataGridView1.DeleteSelectedRows(); 
+0

Спасибо, Халед! Я получаю эту ошибку после использования dataGridView1.DeleteSelectedRows(); Ошибка «System.Windows.Forms.DataGridView» не содержит определения для «DeleteSelectedRows» и не используется метод расширения «DeleteSelectedRows», принимающий первый аргумент типа «System.Windows.Forms.DataGridView», который можно найти (вам не хватает директивы using или ссылки на сборку?) –

+0

Убедитесь, что они оба (определение метода/вызывающий) в том же пространстве имен, если вы не рассматриваете использование пространства имен, которое вы определили –

+0

Ваша форма не может найти метод расширения, который вы есть, потому что он находится под другим пространством имен. Возможно, вам не хватает «использования директивы». –

0
 Int32 rowToDelete = dataGridView1.Rows.GetFirstRow(DataGridViewElementStates.Selected); 
     if (rowToDelete > -1) 
     { 
      dataGridView1.Rows.RemoveAt(rowToDelete); 

      dataGridView1.Invalidate(); 
      string lastName = (string)dataGridView1.Rows[rowToDelete].Cells[0].Value; 
      string firstName = (string)dataGridView1.Rows[rowToDelete].Cells[1].Value; 
      string email = (string)dataGridView1.Rows[rowToDelete].Cells[2].Value; 
      string phoneNumber = (string)dataGridView1.Rows[rowToDelete].Cells[3].Value; 
      string address = (string)dataGridView1.Rows[rowToDelete].Cells[4].Value; 
      string instagram = (string)dataGridView1.Rows[rowToDelete].Cells[5].Value; 
      string carMake = (string)dataGridView1.Rows[rowToDelete].Cells[6].Value; 
      string carModel = (string)dataGridView1.Rows[rowToDelete].Cells[7].Value; 
      string additionalNotes = (string)dataGridView1.Rows[rowToDelete].Cells[8].Value; 
      SqlConnection CustomerInfo = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\Users\\Cory\\Desktop\\DeluxWrapsWindows\\DeluxWrapsWindows\\DeluxWraps.mdf;Integrated Security=True;User Instance=True"); 
      { 
      SqlCommand xp = new SqlCommand("DELETE FROM CustomerInfo WHERE LastName='" + lastName + "' AND FirstName='" + firstName + "'"); 

      CustomerInfo.Open(); 
      xp.ExecuteNonQuery(); 
      CustomerInfo.Close(); 
      } 
     } 
+0

Когда я добавляю код, у меня есть squiggly строка под «Cell». Я не знаю, почему это так. Кроме того, это третий кусок кода для спасительной части? Я очень ценю вашу помощь! –

+0

как вы заполняете dataGridView, отправляете код для этого, я могу изменить ответ на основе количества столбцов, данных в dataGrid. каждая ячейка принадлежит столбцу в dataGridView. – faljbour

+0

Я добавил код, который у меня ниже кода, который вы опубликовали. Я предполагаю, что вы ищете это. Я пользователь DataGridView, чтобы отправлять данные непосредственно из базы данных из Visual Studios, поэтому я сам не писал ни одного из этого кода. –

Смежные вопросы