vb.net
  • winforms
  • 2016-02-03 4 views 0 likes 
    0
    btndelete_Click() 
        for each row as Datagridview Row In DGV.Rows 
        If Convert.ToBoolean(row.Cells(3).Value) = True Then  
         Try 
         sql = "Delete from Student Where ID = '" & row.Cells(0).Value & "'" 
         connect() 
         cmd = New OledbCommand (sql, conn) 
         cmd.ExecuteNonQuery() 
         Catch ex As Exception 
         End Try 
        End If 
        Next 
    End Sub 
    

    Я хочу удалить значения в базе данных на основе отмеченных ячеек в DatagridView. Когда я запускаю код, и я даже не проверяю его, он все равно удалит все.Как определить, установлен ли флажок для datagridview

    +0

    Я бы прошел через это с помощью отладчика и посмотрел, какие значения хранятся. Вы должны иметь возможность посмотреть на необработанную информацию, которую хранят ячейки (3) .value, и оттуда посмотреть, где код работает до следующего. Конечно, обратите внимание на код cmd.ExecuteNonQuery и код подключения, пока вы не выясните это. Также обратите внимание, что вы скрываете любые исключения, которые могут быть вызваны, по крайней мере, не отображая ex.message внутри вашего блока catch. –

    +0

    Да, пожалуйста, ID - это столбец в datagridview, а также столбец таблицы в базе данных, и это форма Windows – Richmond

    +0

    Текстовое поле в datagridview – Richmond

    ответ

    0

    Если во время события клика вы не выбираете какие-либо проверенные ячейки, посмотрите на код, загружающий datagrid. Во время обратной передачи вам не следует привязывать данные, чтобы сохранить значения, которые пользователь возвращает на сервер. Что-то в этом направлении:

    if (!Page.IsPostBack){ 
        dataGrid.DataSourceID = "someDataSource"; 
        dataGrid.DataBind(); 
    } 
    
    +0

    Я не понимаю, что вы имеете в виду. Пожалуйста приходи еще – Richmond

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