Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

ObjectDataSource.UpdateParameters propriété

 

Date de publication : novembre 2016

Obtient la collection de paramètres qui contient les paramètres utilisés par la méthode spécifiée par la UpdateMethod propriété.

Espace de noms:   System.Web.UI.WebControls
Assembly:  System.Web (dans System.Web.dll)

[PersistenceModeAttribute(PersistenceMode.InnerProperty)]
public ParameterCollection UpdateParameters { get; }

Valeur de propriété

Type: System.Web.UI.WebControls.ParameterCollection

Un ParameterCollection qui contient les paramètres utilisés par la méthode spécifiée par la UpdateMethod propriété.

Les noms et types des paramètres contenus dans le UpdateParameters collection doit correspondre les noms et types des paramètres dans le UpdateMethod signature de méthode. Les noms de paramètres sont affectés par le OldValuesParameterFormatString propriété et respectent la casse. Les paramètres de la collection dépendent des données dans le contrôle lié aux données et les paramètres qui sont ajoutés par programmation les paramètres spécifiés de manière déclarative. Pour plus d’informations, consultez la section « Fusion des paramètres » dans Update et Using Parameters with the ObjectDataSource Control.

Le UpdateParameters propriété récupère le UpdateParameters propriété contenue par le ObjectDataSourceView objet auquel est associé le ObjectDataSource contrôle.

Pour plus d’informations sur la fusion des paramètres, de la durée de vie et de la résolution de méthode, consultez la page UpdateMethod.

System_CAPS_security Sécurité Remarque

Vous devez valider toute valeur de paramètre que vous recevez du client. Le runtime substitue simplement la valeur du paramètre dans le UpdateMethod propriété.

Cette section contient deux exemples de code. Le premier exemple de code montre comment utiliser un DropDownList contrôle TextBox contrôles et plusieurs ObjectDataSource objets à mettre à jour des données. Le deuxième exemple de code montre le EmployeeLogic classe utilisée dans le premier exemple de code.

L’exemple de code suivant montre comment utiliser un DropDownList contrôle TextBox contrôles et plusieurs ObjectDataSource contrôles pour mettre à jour des données. La DropDownList affiche le nom d’un employé Northwind alors que le TextBox contrôles sont utilisés pour entrer et mettre à jour les informations d’adresse. Étant donné que le UpdateParameters collection contient un ControlParameter qui est lié à la valeur sélectionnée de la DropDownList, le bouton qui déclenche le Update opération est activée uniquement après sélection d’un employé.

System_CAPS_security Sécurité Remarque

Cet exemple comprend une zone de texte qui accepte une entrée d'utilisateur, ce qui constitue une menace potentielle pour la sécurité. Par défaut, les pages Web ASP.NET vérifient que l'entrée d'utilisateur n'inclut pas de script ou d'éléments HTML. Pour plus d'informations, consultez Script Exploits Overview.

<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.CS" Assembly="Samples.AspNet.CS" %>
<%@ Page language="c#" %>
<%@ Import namespace="Samples.AspNet.CS" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

// Add parameters and initialize the user interface
// only if an employee is selected.
private void Page_Load(object sender, EventArgs e)
{
  // Be sure the text boxes are initialized with
  // data from the currently selected employee.
  NorthwindEmployee selectedEmployee = EmployeeLogic.GetEmployee(DropDownList1.SelectedValue);
  if (selectedEmployee != null) {
    AddressBox.Text    = selectedEmployee.Address;
    CityBox.Text       = selectedEmployee.City;
    PostalCodeBox.Text = selectedEmployee.PostalCode;

    Button1.Enabled = true;
  }
  else {
    Button1.Enabled = false;
  }
}

// Press the button to update.
private void Btn_UpdateEmployee (object sender, CommandEventArgs e) {
  ObjectDataSource2.Update();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head>
    <title>ObjectDataSource - C# Example</title>
  </head>
  <body>
    <form id="Form1" method="post" runat="server">

        <!-- The DropDownList is bound to the first ObjectDataSource. -->
        <asp:objectdatasource
          id="ObjectDataSource1"
          runat="server"
          selectmethod="GetAllEmployees"
          typename="Samples.AspNet.CS.EmployeeLogic" />

        <p><asp:dropdownlist
          id="DropDownList1"
          runat="server"
          datasourceid="ObjectDataSource1"
          datatextfield="FullName"
          datavaluefield="EmpID"
          autopostback="True" /></p>

        <!-- The second ObjectDataSource performs the Update. This
             preserves the state of the DropDownList, which otherwise
             would rebind when the DataSourceChanged event is
             raised as a result of an Update operation. -->

        <!-- Security Note: The ObjectDataSource uses a FormParameter,
             Security Note: which does not perform validation of input from the client.
             Security Note: To validate the value of the FormParameter,
             Security Note: handle the Updating event. -->

        <asp:objectdatasource
          id="ObjectDataSource2"
          runat="server"
          updatemethod="UpdateEmployeeWrapper"
          typename="Samples.AspNet.CS.EmployeeLogic">
          <updateparameters>
            <asp:controlparameter name="anID" controlid="DropDownList1" propertyname="SelectedValue" />
            <asp:formparameter name="anAddress" formfield="AddressBox" />
            <asp:formparameter name="aCity" formfield="CityBox" />
            <asp:formparameter name="aPostalCode" formfield="PostalCodeBox" />
          </updateparameters>
        </asp:objectdatasource>

        <p><asp:textbox
          id="AddressBox"
          runat="server" /></p>

        <p><asp:textbox
          id="CityBox"
          runat="server" /></p>

        <p><asp:textbox
          id="PostalCodeBox"
          runat="server" /></p>

        <asp:button
          id="Button1"
          runat="server"
          text="Update Employee"
          oncommand="Btn_UpdateEmployee" />

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

Exemple de code suit la EmployeeLogic classe utilisée dans l’exemple de code précédent.

namespace Samples.AspNet.CS {

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Web.UI;
using System.Web.UI.WebControls;
  //
  // EmployeeLogic is a stateless business object that encapsulates
  // the operations one can perform on a NorthwindEmployee object.
  //
  public class EmployeeLogic {

    // Returns a collection of NorthwindEmployee objects.
    public static ICollection GetAllEmployees () {
      ArrayList al = new ArrayList();

      // Use the SqlDataSource class to wrap the
      // ADO.NET code required to query the database.
      ConnectionStringSettings cts = ConfigurationManager.ConnectionStrings["NorthwindConnection"];

      SqlDataSource sds
        = new SqlDataSource(cts.ConnectionString,
                            "SELECT EmployeeID FROM Employees");
      try {
        IEnumerable IDs = sds.Select(DataSourceSelectArguments.Empty);

        // Iterate through the Enumeration and create a
        // NorthwindEmployee object for each ID.
        IEnumerator enumerator = IDs.GetEnumerator();
        while (enumerator.MoveNext()) {
          // The IEnumerable contains DataRowView objects.
          DataRowView row = enumerator.Current as DataRowView;
          string id = row["EmployeeID"].ToString();
          NorthwindEmployee nwe = new NorthwindEmployee(id);
          // Add the NorthwindEmployee object to the collection.
          al.Add(nwe);
        }
      }
      finally {
        // If anything strange happens, clean up.
        sds.Dispose();
      }

      return al;
    }

    public static NorthwindEmployee GetEmployee(object anID) {
      ArrayList al = GetAllEmployees() as ArrayList;
      IEnumerator enumerator = al.GetEnumerator();
      while (enumerator.MoveNext()) {
        // The IEnumerable contains initialized NorthwindEmployee objects.
        NorthwindEmployee ne = enumerator.Current as NorthwindEmployee;
        if (ne.EmpID.Equals(anID.ToString())) {
          return ne;
        }
      }
      return null;
    }
    public static void UpdateEmployee(NorthwindEmployee ne) {
      bool retval = ne.Update();
      if (! retval) { throw new NorthwindDataException("Employee update failed."); }
    }

    // This method is added as a conveniece wrapper on the original
    // implementation.
    public static void UpdateEmployeeWrapper(string anID,
                                             string anAddress,
                                             string aCity,
                                             string aPostalCode) {
      NorthwindEmployee ne = new NorthwindEmployee(anID);
      ne.Address = anAddress;
      ne.City = aCity;
      ne.PostalCode = aPostalCode;
      UpdateEmployee(ne);
    }

    // And so on...
  }

  public class NorthwindEmployee {

    public NorthwindEmployee (object anID) {
      this.ID = anID;

      ConnectionStringSettings cts = ConfigurationManager.ConnectionStrings["NorthwindConnection"];
      SqlConnection conn = new SqlConnection (cts.ConnectionString);
      SqlCommand sc =
        new SqlCommand(" SELECT FirstName,LastName,Address,City,PostalCode " +
                       " FROM Employees " +
                       " WHERE EmployeeID = @empId",
                       conn);
      // Add the employee ID parameter and set its value.
      sc.Parameters.Add(new SqlParameter("@empId",SqlDbType.Int)).Value = Int32.Parse(anID.ToString());
      SqlDataReader sdr = null;

      try {
        conn.Open();
        sdr = sc.ExecuteReader();

        // This is not a while loop. It only loops once.
        if (sdr != null && sdr.Read()) {
          // The IEnumerable contains DataRowView objects.
          this.firstName       = sdr["FirstName"].ToString();
          this.lastName        = sdr["LastName"].ToString();
          this.address         = sdr["Address"].ToString();
          this.city            = sdr["City"].ToString();
          this.postalCode      = sdr["PostalCode"].ToString();
        }
        else {
          throw new NorthwindDataException("Data not loaded for employee id.");
        }
      }
      finally {
        try {
          if (sdr != null) sdr.Close();
          conn.Close();
        }
        catch (SqlException) {
          // Log an event in the Application Event Log.
          throw;
        }
      }
    }

    private object ID;
    public object EmpID {
      get { return ID; }
    }

    private string lastName;
    public string LastName {
      set { lastName = value; }
    }

    private string firstName;
    public string FirstName {
      set { firstName = value;  }
    }

    public string FullName {
      get { return firstName + " " + lastName; }
    }

    private string address;
    public string Address {
      get { return address; }
      set { address = value;  }
    }

    private string city;
    public string City {
      get { return city; }
      set { city = value;  }
    }

    private string postalCode;
    public string PostalCode {
      get { return postalCode; }
      set { postalCode = value;  }
    }

    public bool Update () {

      // Implement Update logic.

      return true;
    }
  }

  internal class NorthwindDataException: Exception {
    public NorthwindDataException(string msg) : base (msg) { }
  }
}

.NET Framework
Disponible depuis 2.0
Retour au début
Afficher: