Удалить кнопки внутри сетки для каждой строки
У меня есть gridview, который содержит кнопки удаления и редактирования строки. У меня есть этот HTML-код для gridview:
<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>
Мне нужно активировать кнопки удаления и редактирования с помощью командного аргумента. У меня нет полного понимания командной аргументации, и я думаю, что есть другие способы сделать это лучше. Во всяком случае, у меня есть этот код на стороне сервера 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) под отправителем.
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 в лучшем случае простоват. Также, пожалуйста, позаботьтесь о том, чтобы вы могли получить исключение при выполнении кода для базы данных. Поэтому, пожалуйста, используйте обработку исключений и т.д.