2015-12-05 1 views
-2
private void button3_Click(object sender, EventArgs e) 
{ 
    foreach (DataGridViewRow item in dataGridView1.Rows) 
    { 
     if (bool.Parse(item.Cells[0].Value.ToString())) 
     { 
       MessageBox.Show("Selected Rows : " + item.Cells[0].RowIndex.ToString()); 
     } 
    } 
} 
+0

форматирования кода – prasun

+0

Вы должны добавить более подробную информацию на свой пост, а не просто обеспечить плохо написанный заголовок с еще плохо отформатированный код. –

ответ

0

Попробуйте ниже код

protected void btnDelete_Click(object sender, EventArgs e) 
    { 
     foreach (GridViewRow gvrow in gvDetails.Rows) 
     { 
      //Finiding checkbox control in gridview for particular row using below syntax 
      CheckBox chkdelete = (CheckBox)gvrow.FindControl("chkSelect"); 
      //Condition to check checkbox selected or not 
      if (chkdelete.Checked) 
      { 
       //Getting UserId of particular row using datakey value 
       int usrid = Convert.ToInt32(gvDetails.DataKeys[gvrow.RowIndex].Value); 
       using (SqlConnection con = new SqlConnection("Data Source=SureshDasari;Integrated Security=true;Initial Catalog=MySampleDB")) 
       { 
        con.Open(); 
        SqlCommand cmd = new SqlCommand("delete from UserDetails where UserId=" + usrid, con); 
        cmd.ExecuteNonQuery(); 
        con.Close(); 
       } 
      } 
     } 
     BindUserDetails(); 
    } 

Если вы хотите узнать больше смотрите ниже ссылку

http://tinyurl.com/jgw33xs

+0

Op спрашивает о DataGridview не Gridview.means его Windows Forms – Webruster

+0

Удивление, где вы видите что-либо относительно базы данных в вопросе ... –

0

Когда Button3 является щелкнул следующий обработчик события. Сначала он получает проверенные (выбранные) строки из DataGridView с использованием запроса LINQ, а затем отображает окно сообщений подтверждения.

Если пользователь нажимает кнопку «Да», тогда цикл выполняется по выбранным (отмеченным) строкам, а по одной записи удаляются из таблицы базы данных, используя поле «Идентификатор».

Примечание: базы данных запросов принимается здесь, чтобы сделать О.П. понять, как он может достичь его, как OP вратаря упоминули в своей должности, это будет способ объяснить лучшим способом

private void button3_Click(object sender, EventArgs e) 
    { 
     List<DataGridViewRow> selectedRows = (from row in dataGridView1.Rows.Cast<DataGridViewRow>() 
               where Convert.ToBoolean(row.Cells["checkBoxColumn"].Value) == true 
               select row).ToList(); 
     if (MessageBox.Show(string.Format("Do you want to delete {0} rows?", selectedRows.Count), "Confirmation", MessageBoxButtons.YesNo) == DialogResult.Yes) 
     { 
      foreach (DataGridViewRow row in selectedRows) 
      { 
       using (SqlConnection con = new SqlConnection(ConnectionString)) 
       { 
        using (SqlCommand cmd = new SqlCommand("DELETE FROM Customers WHERE CustomerId = @CustomerId", con)) 
        { 
         cmd.CommandType = CommandType.Text; 
         cmd.Parameters.AddWithValue("@CustomerId", row.Cells["CustomerId"].Value); 
         con.Open(); 
         cmd.ExecuteNonQuery(); 
         con.Close(); 
        } 
       } 
      } 

      this.BindGrid(); 
     } 
    } 
+0

Удивительно, где вы видите что-нибудь относительно базы данных в вопросе ... –

+0

@cFrozenDeath just пример, я не могу дать, даже он дает свою базу данных не может использовать его и дать решение, только способ, которым я хочу помочь, заключается в том, как он может выполнить его, и это что-то рабочий пример, так что OP может реализовать то же самое, данные из OP, это единственный способ (взяв пример из моего собственного рабочего кода) и объяснить ему, как его достичь. исправьте меня, если я ошибаюсь – Webruster

-2

Когда вы удалили одну строку, сначала удалили строку, новые значения размера строки datagrid были полностью минус один, по этой причине я использую i -. И зачем использовать в условном «if (i dataGridView1.Rows.Count -1)», потому что нужно только вычесть, когда строки [i] равны 1, а не когда 0.

Вы можете использовать try catch вместо условного.

Удачи вам!

private void button3_Click(object sender, EventArgs e) 
    { 
     for (int i = 0; i <= dataGridView1.Rows.Count -1; i++) 
     { 
      if ((bool)dataGridView1.Rows[i].Cells[0].Value == true) 
      { 
       dataGridView1.Rows.Remove(dataGridView1.Rows[i]); 
       if (i < dataGridView1.Rows.Count -1) 
       { 
        i--; 
       } 

      } 
     } 
    } 
+0

Пожалуйста, добавьте описание того, почему вы считаете, что это ответ и объясните свой код. –

+0

Вместо этого следует избегать удаления последовательных выбранных строк, т. Е. От последней строки до первой строки, i--. –

+0

Pradeep Kumar, Да, это возможно, но у вас будет значение +1 из datGridView1.Rows.Count, которое невозможно, также может использовать try catch для решения проблемы. Протестируйте это пожалуйста !. – yeisonherbert

0

Попробуйте этот код, он работал для меня:

  int j = 0; 
      int countRows = dataGridView1.Rows.Count; 

      for (int i = 0; i < dataGridView1.Rows.Count; i++) 
      { 
       if (Convert.ToBoolean(dataGridView1.Rows[i] 
             .Cells[0].Value) == true) 
       { 
        dataGridView1.Rows.RemoveAt(i); 
       } 

       i = i - 1; 
       j = j + 1; 

       if (j == countRows) 
       { 
        break; 
       } 
      } 
Смежные вопросы