|
Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte.
|
Traduction
Source
|
Comment un contrôle de source de données crée des paramètres pour des champs liés aux données
Collection Values Passée pour une opération d'insertion. Contient les paires nom/valeur pour un nouvel enregistrement. Les noms et les valeurs des champs de la collection Values sont empruntés aux contrôles enfants dans un InsertItemTemplate ou aux champs liés dans un contrôle DetailsView dont la propriété InsertVisible a la valeur true. Collection Keys Passée pour des opérations de mise à jour et de suppression. Contient la ou les clés primaires de l'enregistrement actuellement mis à jour ou supprimé. Si les champs clés peuvent être modifiés à la source de données, la collection Keys contient également leurs valeurs d'origine. Lorsqu'un contrôle lié aux données est rempli avec les données du contrôle de source de données, il conserve ces données dans l'état d'affichage. Lorsqu'une opération de mise à jour ou de suppression est demandée, la collection Keys est remplie avec les valeurs précédemment stockées dans l'état d'affichage. Si la propriété EnableViewState du contrôle lié aux données a la valeur false, la collection Keys n'est pas remplie pour l'opération de mise à jour ou de suppression. Collection NewValues Passée pour une opération de mise à jour. Contient les paires nom/valeur contenant les nouvelles valeurs de l'élément mis à jour, y compris celles des champs clés actualisables. Les noms et les valeurs des champs de la collection NewValues sont empruntés aux contrôles enfants dans un EditItemTemplate ou aux champs liés dans un contrôle DetailsView dont la propriété ReadOnly a la valeur false. Collection OldValues Passée pour des opérations de mise à jour ou de suppression. Contient les valeurs d'origine de l'enregistrement de données à utiliser pour le contrôle d'accès concurrentiel optimiste. (Pour plus d'informations sur le contrôle d'accès concurrentiel optimiste, consultez la propriété ConflictDetection du contrôle de source de données que vous utilisez). Les valeurs des champs clés identifiés par la propriété DataKeyNames ne sont pas comprises dans la collection OldValues. Les noms et les valeurs des champs clés ne sont compris que dans la collection Keys. Lorsqu'un contrôle lié aux données est rempli avec les données du contrôle de source de données, il conserve ces données dans l'état d'affichage. Lorsqu'une opération de mise à jour ou de suppression est demandée, la collection OldValues est remplie avec les valeurs précédemment stockées dans l'état d'affichage. Si la propriété EnableViewState du contrôle lié aux données a la valeur false, la collection OldValues n'est pas remplie pour l'opération de mise à jour ou de suppression.
UPDATE Table1 SET LastModifiedDate = @LastModifiedDate WHERE Key = @Key AND LastModifiedDate = @old_LastModifiedDate
<%@ Page language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> void EmployeesDropDownList_OnSelectedIndexChanged(Object sender, EventArgs e) { EmployeeDetailsView.DataBind(); } void EmployeeDetailsView_ItemUpdated(Object sender, DetailsViewUpdatedEventArgs e) { EmployeesDropDownList.DataBind(); EmployeesDropDownList.SelectedValue = e.Keys["EmployeeID"].ToString(); EmployeeDetailsView.DataBind(); } void EmployeeDetailsView_ItemDeleted(Object sender, DetailsViewDeletedEventArgs e) { EmployeesDropDownList.DataBind(); } void EmployeeDetailsSqlDataSource_OnInserted(Object sender, SqlDataSourceStatusEventArgs e) { System.Data.Common.DbCommand command = e.Command; EmployeesDropDownList.DataBind(); EmployeesDropDownList.SelectedValue = command.Parameters["@EmpID"].Value.ToString(); EmployeeDetailsView.DataBind(); } </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Northwind Employees</title> </head> <body> <form id="form1" runat="server"> <h3>Northwind Employees</h3> <table cellspacing="10"> <tr> <td valign="top"> <asp:DropDownList ID="EmployeesDropDownList" DataSourceID="EmployeesSqlDataSource" DataValueField="EmployeeID" DataTextField="FullName" AutoPostBack="True" OnSelectedIndexChanged="EmployeesDropDownList_OnSelectedIndexChanged" RunAt="Server" /> </td> <td valign="top"> <asp:DetailsView ID="EmployeeDetailsView" DataSourceID="EmployeeDetailsSqlDataSource" AutoGenerateRows="false" AutoGenerateInsertbutton="true" AutoGenerateEditbutton="true" AutoGenerateDeletebutton="true" DataKeyNames="EmployeeID" Gridlines="Both" OnItemUpdated="EmployeeDetailsView_ItemUpdated" OnItemDeleted="EmployeeDetailsView_ItemDeleted" RunAt="server"> <HeaderStyle backcolor="Navy" forecolor="White"/> <RowStyle backcolor="White"/> <AlternatingRowStyle backcolor="LightGray"/> <EditRowStyle backcolor="LightCyan"/> <Fields> <asp:BoundField DataField="EmployeeID" HeaderText="Employee ID" InsertVisible="False" ReadOnly="true"/> <asp:BoundField DataField="FirstName" HeaderText="First Name"/> <asp:BoundField DataField="LastName" HeaderText="Last Name"/> <asp:BoundField DataField="Address" HeaderText="Address"/> <asp:BoundField DataField="City" HeaderText="City"/> <asp:BoundField DataField="Region" HeaderText="Region"/> <asp:BoundField DataField="PostalCode" HeaderText="Postal Code"/> </Fields> </asp:DetailsView> </td> </tr> </table> <asp:SqlDataSource ID="EmployeesSqlDataSource" SelectCommand="SELECT EmployeeID, LastName + ', ' + FirstName AS FullName FROM Employees" Connectionstring="<%$ ConnectionStrings:NorthwindConnection %>" RunAt="server"> </asp:SqlDataSource> <asp:SqlDataSource ID="EmployeeDetailsSqlDataSource" SelectCommand="SELECT EmployeeID, LastName, FirstName, Address, City, Region, PostalCode FROM Employees WHERE EmployeeID = @EmpID" InsertCommand="INSERT INTO Employees(LastName, FirstName, Address, City, Region, PostalCode) VALUES (@LastName, @FirstName, @Address, @City, @Region, @PostalCode); SELECT @EmpID = SCOPE_IDENTITY()" UpdateCommand="UPDATE Employees SET LastName=@LastName, FirstName=@FirstName, Address=@Address, City=@City, Region=@Region, PostalCode=@PostalCode WHERE EmployeeID=@EmployeeID" DeleteCommand="DELETE Employees WHERE EmployeeID=@EmployeeID" ConnectionString="<%$ ConnectionStrings:NorthwindConnection %>" OnInserted="EmployeeDetailsSqlDataSource_OnInserted" RunAt="server"> <SelectParameters> <asp:ControlParameter ControlID="EmployeesDropDownList" PropertyName="SelectedValue" Name="EmpID" Type="Int32" DefaultValue="0" /> </SelectParameters> <InsertParameters> <asp:Parameter Name="LastName" Type="String" /> <asp:Parameter Name="FirstName" Type="String" /> <asp:Parameter Name="Address" Type="String" /> <asp:Parameter Name="City" Type="String" /> <asp:Parameter Name="Region" Type="String" /> <asp:Parameter Name="PostalCode" Type="String" /> <asp:Parameter Name="EmpID" Direction="Output" Type="Int32" DefaultValue="0" /> </InsertParameters> <UpdateParameters> <asp:Parameter Name="LastName" Type="String" /> <asp:Parameter Name="FirstName" Type="String" /> <asp:Parameter Name="Address" Type="String" /> <asp:Parameter Name="City" Type="String" /> <asp:Parameter Name="Region" Type="String" /> <asp:Parameter Name="PostalCode" Type="String" /> <asp:Parameter Name="EmployeeID" Type="Int32" DefaultValue="0" /> </UpdateParameters> <DeleteParameters> <asp:Parameter Name="EmployeeID" Type="Int32" DefaultValue="0" /> </DeleteParameters> </asp:SqlDataSource> </form> </body> </html>