QueryStringParameter, classe

Remarque : cette classe est nouvelle dans le .NET Framework version 2.0.

Lie la valeur d'un champ de chaîne de requête de demande HTTP à un objet Parameter.

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

public class QueryStringParameter : Parameter
public class QueryStringParameter extends Parameter
public class QueryStringParameter extends Parameter

Vous pouvez utiliser la classe QueryStringParameter pour lier la valeur d'un champ passé dans une chaîne de requête de demande HTTP à un paramètre utilisé dans une requête ou une commande paramétrée. Le champ est récupéré de la collection QueryString. Les contrôles qui lient des données au paramètre peuvent lever une exception si un QueryStringParameter est spécifié, mais qu'aucune paire nom/valeur de chaîne de requête n'est passée. De même, ils peuvent n'afficher aucune donnée si le nom du champ de chaîne de requête est passé sans valeur correspondante. Définissez le DefaultValue afin d'éviter ce type de situation, si approprié.

La classe QueryStringParameter fournit la propriété QueryStringField, qui identifie le nom de la valeur de la chaîne de requête à lier, outre celles héritées de la classe Parameter.

RemarqueImportant :

Le QueryStringParameter ne valide en aucun cas la valeur passée par la chaîne de requête. Il utilise la valeur brute. Dans la plupart des cas, vous pouvez valider la valeur du QueryStringParameter avant qu'il ne soit utilisé par un contrôle de source de données en gérant un événement, tel que l'événement Selecting, Updating, Inserting ou Deleting exposé par le contrôle de source de données utilisé. Si la valeur du paramètre ne répond pas aux exigences de vos tests de validation, vous pouvez annuler l'opération de données en définissant la propriété Cancel de la classe CancelEventArgs possédant la valeur true.

L'exemple de code suivant montre comment utiliser de façon déclarative un paramètre QueryStringParameter comme un filtre lors de l'affichage de données dans un contrôle GridView. Vous déclarez et ajoutez le QueryStringParameter à la collection FilterParameters du contrôle AccessDataSource, et il lie la valeur du champ de la chaîne de requête "country" à sa chaîne FilterExpression. Dans la mesure où aucun DefaultValue n'est spécifié pour le paramètre, si aucun champ nommé "country" n'est passé dans la chaîne de requête, le AccessDataSource lève une NullReferenceException. Si un champ nommé "country" est passé mais sans valeur correspondante, le GridView n'affiche pas de données.

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

<HTML>
  <body>
    <form id="Form1" method="post" runat="server">

      <!-- Use a Query String with country=USA -->
      <asp:gridview
        id ="GridView1"
        runat="server"
        datasourceid="MyAccessDataSource" />

<!-- Security Note: The AccessDataSource uses a QueryStringParameter,
     Security Note: which does not perform validation of input from the client. -->

      <asp:accessdatasource
        id="MyAccessDataSource"
        runat="server"
        datafile="Northwind.mdb"
        selectcommand="SELECT EmployeeID, LastName, Address, PostalCode, Country FROM Employees"
        filterexpression="Country = '{0}'">
        <filterparameters>
          <asp:querystringparameter name="country" type="String" querystringfield="country" />
        </filterparameters>
      </asp:accessdatasource>
    </form>
  </body>
</HTML>

<%@ Page language="VJ#"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<HTML>
  <body>
    <form id="Form1" method="post" runat="server">

      <!-- Use a Query String with country=USA -->
      <asp:GridView
        id ="GridView1"
        runat="server"
        DataSourceMode="DataSet"
        DataSourceID="MyAccessDataSource" />

      <asp:AccessDataSource
        id="MyAccessDataSource"
        runat="server"
        DataFile="Northwind.mdb"
        SelectCommand="SELECT EmployeeID, LastName, Address, PostalCode, Country FROM Employees"
        FilterExpression="Country = '@country'">
        <FilterParameters>
          <asp:QueryStringParameter Name="country" Type="String" QueryStringField="country" />
        </FilterParameters>
      </asp:AccessDataSource>
    </form>
  </body>
</HTML>

L'exemple de code suivant montre comment utiliser de façon déclarative un QueryStringParameter pour afficher des données d'une base de données Access à l'aide d'une requête SQL paramétrée. Le AccessDataSource récupère des enregistrements qui sont affichés dans un contrôle GridView. Le GridView est également modifiable, fournissant une interface utilisateur qui permet aux utilisateurs de mettre à jour l'état des commandes dans le tableau Northwind Traders Orders lorsque des enregistrements sont sélectionnés et qu'on clique sur un bouton.

<%@Page  Language="C#" %>
<%@Import Namespace="System.Data" %>
<%@Import Namespace="System.Data.Common" %>
<!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 UpdateRecords(Object source, EventArgs e)
{
  // This method is an example of batch updating using a
  // data source control. The method iterates through the rows
  // of the GridView, extracts each CheckBox from the row and, if
  // the CheckBox is checked, updates data by calling the Update
  // method of the data source control, adding required parameters
  // to the UpdateParameters collection.
  CheckBox cb;
  foreach(GridViewRow row in this.GridView1.Rows) {
    cb = (CheckBox) row.Cells[0].Controls[1];
    if(cb.Checked) {
      string oid = (string) row.Cells[1].Text;
      MyAccessDataSource.UpdateParameters.Add(new Parameter("date",TypeCode.DateTime,DateTime.Now.ToString()));
      MyAccessDataSource.UpdateParameters.Add(new Parameter("orderid",TypeCode.String,oid));
      MyAccessDataSource.Update();
      MyAccessDataSource.UpdateParameters.Clear();
    }
  }
}
</SCRIPT>

<HTML>
  <BODY>
    <FORM runat="server">

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

      <asp:SqlDataSource
        id="MyAccessDataSource"
        runat="server"
        ProviderName="<%$ ConnectionStrings:MyPasswordProtectedAccess.providerName%>"
        ConnectionString="<%$ ConnectionStrings:MyPasswordProtectedAccess%>"
        SelectCommand="SELECT OrderID, OrderDate, RequiredDate, ShippedDate FROM Orders WHERE EmployeeID=?"
        UpdateCommand="UPDATE Orders SET ShippedDate=? WHERE OrderID = ?">
        <SelectParameters>
          <asp:QueryStringParameter Name="empId" QueryStringField="empId" />
        </SelectParameters>
      </asp:SqlDataSource>

      <asp:GridView
        id ="GridView1"
        runat="server"
        DataSourceID="MyAccessDataSource"
        AllowPaging="True"
        PageSize="10"
        AutoGenerateColumns="False">
          <columns>
            <asp:TemplateField HeaderText="">
              <ItemTemplate>
                <asp:CheckBox runat="server" />
              </ItemTemplate>
            </asp:TemplateField>
            <asp:BoundField HeaderText="Order" DataField="OrderID" />
            <asp:BoundField HeaderText="Order Date" DataField="OrderDate" />
            <asp:BoundField HeaderText="Required Date" DataField="RequiredDate" />
            <asp:BoundField HeaderText="Shipped Date" DataField="ShippedDate" />
          </columns>
      </asp:GridView>

      <asp:Button
        id="Button1"
        runat="server"
        Text="Update the Selected Records As Shipped"
        OnClick="UpdateRecords" />

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

    </FORM>
  </BODY>
</HTML>

<%@Page  Language="VJ#" %>
<%@Import Namespace="System.Data" %>
<%@Import Namespace="System.Data.Common" %>
<!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 UpdateRecords(Object source, System.EventArgs e)
    {
        // This method is an example of batch updating using a
        // data source control. The method iterates through the rows
        // of the GridView, extracts each CheckBox from the row and, if
        // the CheckBox is checked, updates data by calling the Update
        // method of the data source control, adding required parameters
        // to the UpdateParameters collection.
        CheckBox cb;
        for (int iCtr = 0; 
                iCtr < this.GridView1.get_Rows().get_Count(); iCtr++) {
            GridViewRow row = this.GridView1.get_Rows().get_Item(iCtr);
            cb = (CheckBox)row.get_Cells().get_Item(0).get_Controls().get_Item(1);
            if (cb.get_Checked()) {
                String oid = (String)(row.get_Cells().get_Item(1).get_Text());
                MyAccessDataSource.get_UpdateParameters().Add(new Parameter(
                    "date", System.TypeCode.DateTime, System.DateTime.get_Now().ToString()));
                MyAccessDataSource.get_UpdateParameters().Add(new Parameter(
                    "orderid", System.TypeCode.String, oid));
                MyAccessDataSource.Update();
                MyAccessDataSource.get_UpdateParameters().Clear();
            }
        }
    } //UpdateRecords
</SCRIPT>

<HTML>
  <BODY>
    <FORM runat="server">
<!-- Security Note: The SqlDataSource uses a QueryStringParameter,
     Security Note: which does not perform validation of input from the client.
     Security Note: To validate the value of the QueryStringParameter, handle the Selecting event. -->

      <asp:SqlDataSource
        id="MyAccessDataSource"
        runat="server"
        ProviderName="System.Data.OleDb"
        ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\uncpath\Northwind_PasswordProtected.mdb;Mode=3;Jet OLEDB:Database Password=myPassword;"
        SelectCommand="SELECT OrderID, OrderDate, RequiredDate, ShippedDate FROM Orders WHERE EmployeeID=?"
        UpdateCommand="UPDATE Orders SET ShippedDate=? WHERE OrderID = ?">
        <SelectParameters>
          <asp:QueryStringParameter Name="empId" QueryStringField="empId" />
        </SelectParameters>
      </asp:SqlDataSource>
      <asp:GridView
        id ="GridView1"
        runat="server"
        DataSourceID="MyAccessDataSource"
        AllowPaging="True"
        PageSize="10"
        AutoGenerateColumns="False">
          <Columns>
            <asp:TemplateField HeaderText="">
              <ItemTemplate>
                <asp:CheckBox runat="server" />
              </ItemTemplate>
            </asp:TemplateField>
            <asp:BoundField HeaderText="Order" DataField="OrderID" />
            <asp:BoundField HeaderText="Order Date" DataField="OrderDate" />
            <asp:BoundField HeaderText="Required Date" DataField="RequiredDate" />
            <asp:BoundField HeaderText="Shipped Date" DataField="ShippedDate" />
          </Columns>
      </asp:GridView>

      <asp:Button
        id="Button1"
        runat="server"
        Text="Update the Selected Records As Shipped"
        OnClick="UpdateRecords" />

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

    </FORM>
  </BODY>
</HTML>

System.Object
   System.Web.UI.WebControls.Parameter
    System.Web.UI.WebControls.QueryStringParameter

Les membres statiques publics (Shared en Visual Basic) de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition

Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.

.NET Framework

Prise en charge dans : 2.0

Ajouts de la communauté

AJOUTER
Afficher: