SqlDataSource.DeleteCommand Właściwość

Definicja

Pobiera lub ustawia ciąg SQL używany SqlDataSource przez kontrolkę do usuwania danych z bazowej bazy danych.

public:
 property System::String ^ DeleteCommand { System::String ^ get(); void set(System::String ^ value); };
public string DeleteCommand { get; set; }
member this.DeleteCommand : string with get, set
Public Property DeleteCommand As String

Wartość właściwości

String

Ciąg SQL używany SqlDataSource do usuwania danych.

Przykłady

W poniższym przykładzie kodu pokazano, jak ustawić DeleteCommand tekst w celu usunięcia zamówienia z tabeli Orders bazy danych Northwind. Dane są pobierane z tabeli Orders i wyświetlane w kontrolce GridView . Przycisk GridView Usuń jest renderowany automatycznie, gdy właściwość jest ustawiona AutoGenerateDeleteButton na true. Ponadto po kliknięciu GridView przycisku Usuń kontrolka automatycznie wypełnia DeleteParameters kolekcję i wywołuje metodęDelete. Na koniec, ponieważ ten przykład kodu usuwa dane, program obsługi zdarzeń jest dodawany do próby utworzenia kopii zapasowej bazy danych na dysku przed wykonaniem Delete operacji.

<%@Page  Language="C#" %>
<%@Import Namespace="System.Data.SqlClient" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
private void OnRecordDeleting(Object source, SqlDataSourceCommandEventArgs e) {    
    // Cancel the delete operation if the checkbox is not checked.
    if (! CheckBox1.Checked) {
        e.Cancel = true;
        Label1.Text = "The command was cancelled because the CheckBox was not checked.";
    }
 }

private void OnRecordDeleted(object source, SqlDataSourceStatusEventArgs e) {
    Label1.Text = e.AffectedRows + " row(s) were deleted";
}
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:SqlDataSource
            id="SqlDataSource1"
            runat="server"
            DataSourceMode="DataSet"
            ConnectionString="<%$ ConnectionStrings:MyNorthwind%>"
            SelectCommand="SELECT * FROM Orders"            
            DeleteCommand="DELETE FROM [Order Details] WHERE OrderID=@OrderID;DELETE FROM Orders WHERE OrderID=@OrderID;"
            OnDeleting="OnRecordDeleting"
            OnDeleted="OnRecordDeleted">
        </asp:SqlDataSource>
        <br />
       <asp:CheckBox 
         id="CheckBox1" 
         runat="server"
         autopostback="true"
         text="Check To Delete Data" />
        <br />
        <br />

        <asp:GridView
            id="GridView1"
            runat="server"
            AutoGenerateColumns="False"
            DataKeyNames="OrderID"
            AutoGenerateDeleteButton="True"
            AllowPaging="True"
            PageSize="20"
            DataSourceID="SqlDataSource1">
            <Columns>
                <asp:BoundField HeaderText="Order ID" DataField="OrderID" />
                <asp:BoundField HeaderText="Customer" DataField="CustomerID" />
                <asp:BoundField HeaderText="Order Placed" DataField="OrderDate" />
                <asp:BoundField HeaderText="Order Shipped" DataField="ShippedDate" />
            </Columns>
        </asp:GridView>

        <asp:Label
            id="Label1"
            runat="server">
        </asp:Label>

    </form>
  </body>
</html>
<%@Page  Language="VB" %>
<%@Import Namespace="System.Data.SqlClient" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
 Sub On_Record_Deleting(ByVal source As Object, ByVal e As SqlDataSourceCommandEventArgs)
     ' Cancel the delete operation if the checkbox is not checked.
     If Not CheckBox1.Checked 
            e.Cancel = True
            Label1.Text = "The command was cancelled because the CheckBox was not checked."
     End If

End Sub 'On_Record_Deleting

Sub On_Record_Deleted(ByVal source As Object, ByVal e As SqlDataSourceStatusEventArgs)
    Label1.Text = e.AffectedRows & " row(s) were deleted"

End Sub
    
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">

        <asp:SqlDataSource
            id="SqlDataSource1"
            runat="server"
            DataSourceMode="DataSet"
            ConnectionString="<%$ ConnectionStrings:MyNorthwind%>"
            SelectCommand="SELECT * FROM Orders"
            DeleteCommand="DELETE FROM [Order Details] WHERE OrderID=@OrderID;DELETE FROM Orders WHERE OrderID=@OrderID;"
            OnDeleting="On_Record_Deleting"
            OnDeleted="On_Record_Deleted">
        </asp:SqlDataSource>
        <br />

       <asp:CheckBox 
         id="CheckBox1" 
         runat="server"
         autopostback="true"
         text="Check To Delete Data" />
        <br />
        <br />

        <asp:GridView
            id="GridView1"
            runat="server"
            AutoGenerateColumns="False"
            DataKeyNames="OrderID"
            AutoGenerateDeleteButton="True"
            AllowPaging="True"
            PageSize="20"
            DataSourceID="SqlDataSource1">
            <Columns>
                <asp:BoundField HeaderText="Order ID" DataField="OrderID" />
                <asp:BoundField HeaderText="Customer" DataField="CustomerID" />
                <asp:BoundField HeaderText="Order Placed" DataField="OrderDate" />
                <asp:BoundField HeaderText="Order Shipped" DataField="ShippedDate" />
            </Columns>
        </asp:GridView>

        <asp:Label
            id="Label1"
            runat="server">
        </asp:Label>

    </form>
  </body>
</html>

Uwagi

Obiekt DeleteCommand reprezentuje zapytanie SQL lub nazwę procedury składowanej i jest używane przez metodę Delete .

Ponieważ różne produkty bazy danych używają różnych odmian SQL, składnia ciągu SQL zależy od używanego bieżącego dostawcy ADO.NET, który jest identyfikowany przez ProviderName właściwość. Jeśli ciąg SQL jest sparametryzowanym zapytaniem lub poleceniem, składnia parametru zależy również od używanego dostawcy ADO.NET. Jeśli na przykład dostawca jest dostawcą System.Data.SqlClient, który jest domyślnym dostawcą klasy SqlDataSource , składnią parametru jest '@parameterName'. Jeśli jednak dostawca jest ustawiony na System.Data.Odbc wartość lub System.Data.OleDb, symbol zastępczy parametru to '?'. Aby uzyskać więcej informacji na temat sparametryzowanych SQL zapytań i poleceń, zobacz Using Parameters with the SqlDataSource Control (Używanie parametrów za pomocą kontrolki SqlDataSource).

Właściwość DeleteCommand może być ciągiem SQL lub nazwą procedury składowanej, jeśli baza danych obsługuje procedury składowane.

Właściwość DeleteCommand deleguje do DeleteCommand właściwości obiektu skojarzonego SqlDataSourceView z kontrolką SqlDataSource .

Ważne

W celach zabezpieczających DeleteCommand właściwość nie jest przechowywana w stanie widoku. Ponieważ istnieje możliwość dekodowania zawartości stanu widoku na kliencie, przechowywanie poufnych informacji o strukturze bazy danych w stanie widoku może spowodować lukę w zabezpieczeniach ujawniania informacji.

Dotyczy

Zobacz też