想在datagrid中删除一行数据,但是数据记录中有些字段含空值,且哪些字段不确定,sql的删除语句应该怎么写?
另外,我想在datagrid中插入空行,可以吗? 怎么样能够比较方便地实现这样的操作?

解决方案 »

  1.   

    1.以主键为检索条件
    2.DATATABEL中加入空行
      

  2.   

    在数据库中找个不能为空的列作为Delete的条件在数据库中INISRT个空行
    DataGrid绑定的时候SELECT语句别选上不能为空那列,
      

  3.   

    主键
    如果你的DATAGRID不要显示主键的话,你可以加一个隐藏列放主键,然后删除你可以给DATASET加空行
      

  4.   

    Private Sub FillBlankRow()
            Dim gridDataRow As DataRow                    
            Dim gridDataSet As DataSet                    
            Dim gridDataTable As DataTable                        Dim gridDataColumn As DataColumn              
            Dim columnName(8) As String
            Dim i As Integer        columnName(0) = "ClassId"
            columnName(1) = "Title"
            columnName(2) = "PostUser"
            columnName(3) = "PublishedTime"
            columnName(4) = "CheckUser"
            gridDataSet = New DataSet
            gridDataTable = New DataTable("myGive")        For i = 0 To 4
                gridDataColumn = New DataColumn
                gridDataColumn.ColumnName = columnName(i)
                gridDataTable.Columns.Add(gridDataColumn)
            Next        gridDataSet.Tables.Add(gridDataTable)
            For i = 0 To 100
                gridDataRow = gridDataTable.NewRow()
                gridDataRow("ClassId") = "000000"
                gridDataRow("Title") = "000000"
                gridDataRow("PostUser") = "000000"
                gridDataRow("PublishedTime") = "2004-05-06"
                gridDataRow("CheckUser") = "000000"
                gridDataTable.Rows.Add(gridDataRow)
            Next
            dgListArticle.DataSource = gridDataSet
            dgListArticle.DataBind()
        End Sub
      

  5.   

    加个主键,就行了
    delete from table where idno=主键
      

  6.   

    加ID当然是可以的,但是对于用户使用不方便。
    能不能做到对于任何一张表,得到它的字段名称、字段个数,使sql语句对于datagrid绑定的任何一张表都适用(这些表在同一个数据集中,同属一个数据库)?
      

  7.   

    怎么得到datagrid中所显示的源表的名字呢?
    我想对多张表用统一的sql语句来做删除操作
      

  8.   

    那delete from 也需要知道表名啊,怎么得到呢?
    另外,我配置数据库适配器的时候没有把主键ID列加入,
    那删除操作时候怎么得到ID列的值呢?
    我用Dim id As Int32 = ds.tablename.Item(e.Item.ItemIndex).Item(0),
    不能删除,好像得不到e.Item.ItemIndex的值,要怎么办?
    还有,update要写成一个统一的形式,对任何表都适用,怎么写?
      

  9.   

    我现在表中已经加了主键了.
    但是删除还是不能执行,代码如下:
    Private Sub DataGrid1_DeleteCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.DeleteCommand
            Dim id As Long = Int(e.Item.Cells(2).Text)
            SourceTable()
                Try
                Dim DelStr As String = "Delete From " + tablename + " Where (ID = " + id + ") "
                ' Label6.Text = delstr.ToString
                Dim DelCmd As OleDbCommand = New OleDbCommand(DelStr, OleDbConnection1)
                OleDbConnection1.Open()
                DelCmd.ExecuteNonQuery()
                OleDbConnection1.Close()
            Catch ex As Exception
                Dim tmp As String = "<script language='javascript'> alert('" + ex.Message.ToString + "')</script>"
                Page.RegisterStartupScript("tmp", tmp)
            End Try        If (DataGrid1.Items.Count = 1 And DataGrid1.CurrentPageIndex > 0) Then
                DataGrid1.CurrentPageIndex = DataGrid1.CurrentPageIndex - 1
            End If
            DataGrid1.EditItemIndex = -1
            mydatabind()
          
        End Sub
    请问为什么啊? 救命啊,望高手们帮帮忙!!!!!!!!!!!!!!!!!!!!!!!!
    还有,好多表的更新/插入,一定要针对每一张表写sql语句吗?
      

  10.   

    你加上断点
    把DelStr这个值打出来,在查询分析器执行一下
      

  11.   

    我试过设断点查看delstr,但是,ID列的值是数值,因此整个字符串是空的,那要怎么办呢?
    存储过程我没有用过,请教一下,改怎么用呢?
      

  12.   

    呵呵,现在删除可以了,居然是因为id值要tostring
     Dim DelStr As String = " Delete From " + tablename + " Where ID = " + id.ToString
    真是吐血!
      

  13.   

    不过对于多张表的插入和更新,有没有比较简便的方法呢?
    可不可以像删除一样,只设置一个tablename变量,用统一的sql语句完成呢?
    主要是这多张表的字段都不一样,字段数也不一样,有没有方法可以得到字段数/字段名/字段值呢?
    望知道的人说明一下或者给个例子,万分感谢!!!!!!!!!!!!