Удалить кнопки внутри сетки для каждой строки

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

Другие вопросы по тегам