我在GridView1
中有一个ASP按钮链接,应该在点击时删除db表中的项目,我收到此错误消息:
Deleting is not supported by data source 'SqlDataSource1' unless DeleteCommand is specified.
这是代码:
VB.NET
Protected Sub GridView1_RowCommand(sender As Object, e As GridViewCommandEventArgs) Handles GridView1.RowCommand
If e.CommandName.Equals("Delete") Then
Dim rowIndex As Integer = Convert.ToInt32(e.CommandArgument)
Dim rowID As String = e.CommandArgument.ToString()
Dim conn As New SqlConnection("Data Source=BRIAN-PC\SQLEXPRESS;Initial Catalog=master_db;Integrated Security=True;")
Dim cmd As New SqlCommand("DELETE content WHERE content_id=@rowID", conn)
cmd.Parameters.AddWithValue("@rowID", rowID)
conn.Open()
cmd.ExecuteNonQuery()
conn.Close()
End If
End Sub
ASP
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4" DataSourceID="SqlDataSource1" ForeColor="#333333" GridLines="None" ViewStateMode="Enabled">
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
<Columns>
<asp:BoundField DataField="content_name" HeaderText="Content Name" SortExpression="content_name">
</asp:BoundField>
<asp:BoundField DataField="content_type" HeaderText="Content Type" SortExpression="content_type">
</asp:BoundField>
<asp:buttonfield buttontype="Link" commandname="Delete" text="Delete">
<ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" />
</asp:buttonfield>
<asp:TemplateField HeaderText=" ">
<ItemTemplate>
<asp:LinkButton ID="lnkDownload" runat="server" Text="Download" OnClick="lnkDownload_Click" ></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<EditRowStyle BackColor="#999999" />
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
<SortedAscendingCellStyle BackColor="#E9E7E2" />
<SortedAscendingHeaderStyle BackColor="#506C8C" />
<SortedDescendingCellStyle BackColor="#FFFDF8" />
<SortedDescendingHeaderStyle BackColor="#6F8DAE" />
</asp:GridView>
根据我的阅读,您需要为SQLDataSource1
指定DELETE命令。
我的情况如何做到这一点?
答案 0 :(得分:4)
如果您将其更改为...... CommandName="DeleteRow"
或类似内容...然后将其更改为if(e.CommandName == "DeleteRow")
,您将绕过该问题。
答案 1 :(得分:1)
你必须输入asp代码:
<asp:ButtonColumn CommandName="Delete" Text="Delete"></asp:ButtonColumn>
真诚。
答案 2 :(得分:0)
快速回答我是如何做到这一点的。
如果您选择&#34; ShowDeleteButton&#34;在选择字段的命令字段属性下&#34;删除&#34;将显示在gridview上每行的左侧。但是,当您这样做时,期望sql数据源将具有删除命令。如果没有,您将收到有关未指定删除命令的令人讨厌的消息。
由于我希望BusinessObject处理删除而不是sql数据源,我改为使用select,就像你要选择一行一样,然后我改变了&#34; SelectText&#34;在命令字段属性下说&#34;删除&#34;。这允许我使用RowCommand事件来捕获删除操作。从那里我抓住了我需要的行信息,并将其传递给业务对象进行删除。
请注意,当您这样做时,CommandName仍然是&#34;选择&#34;即使命令文本是&#34;删除&#34;。所以你检查如下:
if (e.CommandName.ToString() == "Select")
希望有人帮助。祝你好运!
答案 3 :(得分:0)
您需要将其更改为Else Like
<asp:buttonfield buttontype="Link" commandname="Del" text="Delete">
然后将其更改为(e.CommandName == "Del")
因为“DELETE”保留给SQlDataSource Control
答案 4 :(得分:-1)
发生此错误是因为您编写了命令名称delete。所以你写一些像删除记录。当你使用SQLDataSource时,time命令应该与delete或update不同。请使用替代名称。