【问题标题】:delete buttons inside the gridview for each row删除每行gridview内的按钮
【发布时间】:2013-02-28 22:48:38
【问题描述】:

我有一个 gridview,其中包含删除和编辑行的按钮。我有这个用于gridview的html代码:

<asp:GridView ID="gvList" runat="server">
<Columns>

<asp:TemplateField HeaderText="Actions" HeaderStyle-ForeColor="black" HeaderStyle-Font-Bold="true">
<ItemTemplate>
<asp:Button ID="btnedit" runat="server" Text="Edit" />
<asp:Button CommandArgument='<%# Eval("cUserName")%>' ID="btnDelete" OnClick="DeleteRow" runat="server" Text="Delete" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

我需要使用命令参数激活删除和编辑按钮。我对 commandargument 没有完全了解,我想还有其他方法可以更好地做到这一点。无论如何,我在 vb 服务器端有这段代码:

Public Function DelRow() As DataTable

Dim Btn As ImageButton = CType(sender, ImageButton)


    Dim Query As String = "Delete FROM Intranet.dbo.Gn_ISCoordinators where cUserName=" & Btn.CommandArgument
    Dim dt As DataTable = New DataTable()
'
'I need to complete this
'...
'
End Using
End Function

另外,我想知道btnAdd.CommandArgument 是否正确。 Ps:我在sender下的CType(sender,ImageButton)有错误。

【问题讨论】:

  • 不要使用内联查询

标签: asp.net vb.net gridview commandargument


【解决方案1】:

asp:Button 应使用以下行进行转换:

Dim Btn As ImageButton = CType(sender, Button)

作为Button 而不是作为ImageButton

其次,您将从Btn.CommandArgument 获取用户名,但将CommandArgument 与SQL 查询连接起来并不是一个好主意。如果不是存储过程或某些 ORM 框架,至少尝试使用带参数的查询。使用以下连接数据库并执行查询:

Using con As SqlConnection = New SqlConnection(<CONNECTION_STRING>)
    con.Open()
    Dim sql As String = "Delete FROM Intranet.dbo.Gn_ISCoordinators where" & _
                      " cUserName= @UserName"

    Dim cmd As SqlCommand = New SqlCommand(sql, con)
    cmd.Parameters.Add(New SqlParameter("@UserName", Btn.CommandArgument))

    cmd.ExecuteNonQuery() 
    con.Close()
End Using

PS:- 我的 VB.Net 充其量是质朴的。另外请注意在对数据库执行代码时可能会出现异常。所以请使用异常处理等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-06
    • 1970-01-01
    • 1970-01-01
    • 2018-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    相关资源
    最近更新 更多