我有一个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:发件人下的CType(发件人,ImageButton)有错误。
答案 0 :(得分: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充其量是质朴的。另外请注意,在针对数据库执行代码时可能会出现异常。所以请使用异常处理等。