Sdílet prostřednictvím


SqlDataSource.DeleteCommand Vlastnost

Definice

Získá nebo nastaví řetězec SQL, který SqlDataSource ovládací prvek používá k odstranění dat z podkladové databáze.

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

Hodnota vlastnosti

Řetězec SQL, který SqlDataSource používá k odstranění dat.

Příklady

Následující příklad kódu ukazuje, jak nastavit DeleteCommand text pro odstranění objednávky z tabulky Objednávky databáze Northwind. Data se načtou z tabulky Orders a zobrazí se v ovládacím GridView prvku. Při GridView nastavení truevlastnosti se automaticky vykreslí tlačítko AutoGenerateDeleteButtonDelete . Kromě toho při kliknutí na GridView tlačítko Delete ovládací prvek automaticky naplní DeleteParameters kolekci a zavolá metoduDelete. A konečně, protože tento příklad kódu odstraní data, přidá se obslužná rutina události, která se pokusí zálohovat databázi na disk před provedením Delete operace.

<%@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>

Poznámky

Představuje DeleteCommand dotaz SQL nebo název uložené procedury a je používán metodou Delete .

Vzhledem k tomu, že různé databázové produkty používají různé odrůdy JAZYKa SQL, syntaxe řetězce SQL závisí na aktuálním používaném poskytovateli ADO.NET, který je identifikován ProviderName vlastností. Pokud je řetězec SQL parametrizovaný dotaz nebo příkaz, syntaxe parametru závisí také na použitém poskytovateli ADO.NET. Pokud je například zprostředkovatel , což je System.Data.SqlClientvýchozí zprostředkovatel pro SqlDataSource třídu, syntaxe parametru je '@parameterName'. Pokud je však zprostředkovatel nastaven na System.Data.Odbc hodnotu nebo System.Data.OleDb, zástupný symbol parametru je '?'. Další informace o parametrizovaných dotazech a příkazech SQL naleznete v tématu Použití parametrů s ovládacím prvku SqlDataSource.

Vlastnost DeleteCommand může být řetězec SQL nebo název uložené procedury, pokud databáze podporuje uložené procedury.

Vlastnost DeleteCommand deleguje na DeleteCommand vlastnost objektu SqlDataSourceView , který je přidružen k SqlDataSource ovládacího prvku.

Důležité

Pro účely DeleteCommand zabezpečení není vlastnost uložena ve stavu zobrazení. Protože je možné dekódovat obsah stavu zobrazení na klientovi, uložení citlivých informací o struktuře databáze ve stavu zobrazení může vést k ohrožení zabezpečení spočívající ve zpřístupnění informací.

Platí pro

Viz také