首页 > 解决方案 > 如何在 ASP.net 代码页中删除 GridView 控件中的选定行?

问题描述

我在 ASP.net 代码页中有以下 VB 代码,当我单击删除链接按钮时,它会删除 GridView 中的每一行。是否可以只删除选定的行?

    Protected Sub grvPos_RowDeleting(sender As Object, e As GridViewDeleteEventArgs) Handles grvPos.RowDeleting
    Dim cs As String
    Dim con As iDB2Connection
    Dim sql As String
    Dim cmd As iDB2Command
    Dim valDate As Integer
    Dim portCode As String
    Dim secCode As String

    For Each gr As GridViewRow In grvPos.Rows

        valDate = grvPos.DataKeys(gr.RowIndex).Values("VALN_DATE")
        portCode = grvPos.DataKeys(gr.RowIndex).Values("PORT_CODE").ToString()
        secCode = grvPos.DataKeys(gr.RowIndex).Values("SEC_CODE").ToString()

        cs = ConfigurationManager.ConnectionStrings("ConnectionStringDB2").ConnectionString
        con = New iDB2Connection(cs)
        sql = "DELETE FROM OPTR_POS_FIX WHERE (VALN_DATE = @valDate) AND (PORT_CODE = @portCode) AND (SEC_CODE = @secCode)"
        cmd = New iDB2Command(sql, con)
        cmd.Parameters.AddWithValue("@valDate", valDate)
        cmd.Parameters.AddWithValue("@portCode", portCode)
        cmd.Parameters.AddWithValue("@secCode", secCode)

        Try
            Using con
                con.Open()
                cmd.ExecuteNonQuery()

            End Using

        Catch ex As Exception
            Throw

        End Try
    Next
End Sub

我很感激任何帮助提前谢谢

标签: asp.netvb.net

解决方案


此代码中的For Each运算符迭代网格的所有行。而不是你必须只获得选定的行。

所以只需删除For Each - Next循环,然后添加该行

GridViewRow gr = grvPos.Rows[e.RowIndex];

升级版。你是对的,在 vb.net 语法中它将是:

Dim gr As GridViewRow
gr = grvPos.Rows(e.RowIndex)

推荐阅读