SqlDataSource.DeleteCommand Egenskap
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Hämtar eller anger DEN SQL-sträng som SqlDataSource kontrollen använder för att ta bort data från den underliggande databasen.
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
Egenskapsvärde
En SQL-sträng som SqlDataSource används för att ta bort data.
Exempel
I följande kodexempel visas hur du ställer in DeleteCommand texten för att ta bort en order från tabellen Northwind-databasbeställningar. Data hämtas från tabellen Beställningar och visas i en GridView kontroll. Återger GridView knappen Ta bort automatiskt när egenskapen AutoGenerateDeleteButton är inställd på true. När knappen Ta bort klickas fylls GridView dessutom samlingen i automatiskt DeleteParameters av kontrollen och metoden anropas Delete . Eftersom det här kodexemplet tar bort data läggs slutligen en händelsehanterare till för att försöka säkerhetskopiera databasen till disken innan åtgärden Delete utförs.
<%@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>
Kommentarer
DeleteCommand Representerar en SQL-fråga eller namnet på en lagrad procedur och används av Delete metoden.
Eftersom olika databasprodukter använder olika sorter av SQL beror syntaxen för SQL-strängen på den aktuella ADO.NET-providern som används, vilket identifieras av egenskapen ProviderName. Om SQL-strängen är en parameteriserad fråga eller ett kommando beror parameterns syntax också på vilken ADO.NET-provider som används. Om providern till exempel är System.Data.SqlClient, som är standardprovidern för SqlDataSource klassen, är '@parameterName'parameterns syntax . Men om providern är inställd på System.Data.Odbc eller System.Data.OleDbär '?'platshållaren för parametern . Mer information om parameteriserade SQL-frågor och -kommandon finns i Använda parametrar med SqlDataSource-kontrollen.
Egenskapen DeleteCommand kan vara en SQL-sträng eller namnet på en lagrad procedur, om databasen stöder lagrade procedurer.
Egenskapen DeleteCommand delegerar till DeleteCommand egenskapen för objektet SqlDataSourceView som är associerat med SqlDataSource kontrollen.
Important
I säkerhetssyfte lagras inte egenskapen DeleteCommand i visningstillstånd. Eftersom det är möjligt att avkoda innehållet i visningstillståndet på klienten kan lagring av känslig information om databasstrukturen i visningstillstånd leda till en sårbarhet för informationsutlämnande.