手动从gridview绑定中删除一行?

Posted

技术标签:

【中文标题】手动从gridview绑定中删除一行?【英文标题】:Deleting a row from gridview bound manually? 【发布时间】:2013-12-03 15:02:17 【问题描述】:

我有一个绑定到允许下载文件的表的网格视图。该表包括:

tableid 为 int 文件名作为字符串 文件路径为字符串 删除(在网格视图中添加列)

这种删除不是自动的,它是编码的。我希望用户单击删除,选择的行将被删除。就这么简单,但我似乎无法获得要删除的行的 ID。这就是我所做的:

  Try
        'Get the Image_Id from the DataKeyNames
        Dim imgId As Integer = Convert.ToInt32(gvDetails.DataKeys(e.RowIndex).Value)


        Dim cmd As New SqlCommand("delete from FilesTable where id=@id", con)
        cmd.Parameters.AddWithValue("@id", imgId)
        cmd.CommandType = CommandType.Text
        con.Open()
        cmd.ExecuteNonQuery()
    Catch ex As Exception
        ScriptManager.RegisterStartupScript(Me, Me.[GetType](), "Message", "alert('Error occured : " & ex.Message.ToString() & "');", True)
    End Try

但我不断收到字符串输出无法转换为整数的错误:

发生错误:输入字符串的格式不正确。

请帮忙!

这是网格视图的绑定方式:

Private Sub BindGridviewData() 
    Try 
        con.Open() 
        Dim cmd As New SqlCommand("select * from FilesTable", con) 
        Dim da As New SqlDataAdapter(cmd) 
        Dim ds As New DataSet() 
        da.Fill(ds) 
        con.Close() 
        gvDetails.DataSource = ds 
        gvDetails.DataBind() 

    Catch ex As Exception 
        Response.Write(ex.Message) 
    End Try 
End Sub

【问题讨论】:

您是否尝试过调试并查看gvDetails.DataKeys(e.RowIndex).Value 的值是多少?我希望它不是可以转换为整数的东西。你是如何绑定你的网格视图的? Private Sub BindGridviewData() Try con.Open() Dim cmd As New SqlCommand("select * from FilesTable", con) Dim da As New SqlDataAdapter(cmd) Dim ds As New DataSet() da .Fill(ds) con.Close() gvDetails.DataSource = ds gvDetails.DataBind() Catch ex As Exception Response.Write(ex.Message) End Try End Sub 是的,我做了,值是 = 0,它不应该是 FilesTable有主键吗?我目前无法测试,但我怀疑 DataKeys 不会自动设置,除非绑定到它的表具有主键?您可能需要在调用Databind()之前设置DataKeyName Property 是的,正如您在上面的代码中看到的那样,它确实调用了 id! 【参考方案1】:

找了很久才找到答案,很简单的问题:

而不是: Dim imgId As Integer = Convert.ToInt32(gvDetails.DataKeys(e.RowIndex).Value)

我改成:

Dim imgId As Integer = Int32.Parse(gvDetails.Rows(e.RowIndex).Cells(0).Text)

【讨论】:

以上是关于手动从gridview绑定中删除一行?的主要内容,如果未能解决你的问题,请参考以下文章

C# ASP.NET怎么手动给GridView赋值,不从数据库中读取?

winform gridview怎么刷新

android如何删除gridview中的某个item

DevExpress的gridControl怎么删除网格中的一行

在 Gridview 中选择一行并将其删除 - Asp.net

WPF ListView点击删除某一行并获取绑定数据