1

GridView1クリックするとデータベース テーブルから項目を削除するASP ボタン リンクがあり、次のエラー メッセージが表示されます。

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>

私が読んだことから、 に対して DELETE コマンドを指定する必要がありますSQLDataSource1

私の場合、どうすればいいですか?

4

5 に答える 5

5

それを...CommandName="DeleteRow"または何か..のように変更してから、に変更すると、if(e.CommandName == "DeleteRow")その問題は回避されます。

于 2013-06-20T05:56:25.117 に答える
0

私がこれをどのように行ったかについての簡単な答えです。

選択フィールドのコマンド フィールド プロパティで「ShowDeleteButton」を選択すると、グリッドビューの各行の左側に「削除」が表示されます。ただし、これを行うと、SQL データ ソースに削除コマンドがあることが予想されます。そうでない場合は、削除コマンドが指定されていないという厄介なメッセージが表示されます。

SQL データ ソースではなく BusinessObject で削除を処理するようにしたかったので、行を選択するのと同じように選択を使用し、コマンド フィールド プロパティの下の「SelectText」を「削除」に変更しました。これにより、RowCommand イベントを使用して削除アクションをキャッチできるようになりました。そこから、必要な行情報を取得し、それを削除のためにビジネス オブジェクトに渡しました。

そのようにすると、コマンドテキストが「削除」であっても、コマンド名は「選択」のままであることに注意してください。したがって、次のように確認します。

 if (e.CommandName.ToString() == "Select")

それが誰かを助けることを願っています。幸運を!

于 2014-06-11T17:04:18.210 に答える
0

他のものに変更する必要があります

<asp:buttonfield buttontype="Link" commandname="Del" text="Delete">

(e.CommandName == "Del") 「DELETE」はSQlDataSourceコントロールに予約されているため、次のように変更します

于 2016-01-04T13:58:32.143 に答える