Udostępnij za pośrednictwem


Parameter Klasa

Definicja

Udostępnia mechanizm używany przez kontrolki źródła danych do powiązania ze zmiennymi aplikacji, tożsamościami użytkowników i opcjami wyboru oraz innymi danymi. Służy jako klasa bazowa dla wszystkich typów parametrów ASP.NET.

public ref class Parameter : ICloneable, System::Web::UI::IStateManager
public class Parameter : ICloneable, System.Web.UI.IStateManager
type Parameter = class
    interface ICloneable
    interface IStateManager
Public Class Parameter
Implements ICloneable, IStateManager
Dziedziczenie
Parameter
Pochodne
Implementuje

Przykłady

W poniższym przykładzie pokazano, jak użyć wybranej wartości kontrolki DropDownList w klauzuli Where zapytania SQL. W przykładzie użyto ControlParameter klasy pochodzącej ControlParameter z klasy .

Element SelectCommand definiuje zapytanie z parametrem o nazwie "@Title", z DropDownList1 którego powinna zostać wybrana wartość. Element ControlParameter określa, że symbol zastępczy "@Title" zostanie zastąpiony wartością SelectedValue właściwości kontrolki DropDownList1 . Element ControlParameter jest dodawany do SelectParameters kolekcji kontrolki SqlDataSource .

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">

      <p><asp:dropdownlist
          id="DropDownList1"
          runat="server"
          autopostback="True">
          <asp:listitem selected="True">Sales Representative</asp:listitem>
          <asp:listitem>Sales Manager</asp:listitem>
          <asp:listitem>Vice President, Sales</asp:listitem>
      </asp:dropdownlist></p>

      <asp:sqldatasource
          id="SqlDataSource1"
          runat="server"
          connectionstring="<%$ ConnectionStrings:MyNorthwind%>"
          selectcommand="SELECT LastName FROM Employees WHERE Title = @Title">
          <selectparameters>
              <asp:controlparameter name="Title" controlid="DropDownList1" propertyname="SelectedValue"/>
          </selectparameters>
      </asp:sqldatasource>

      <p><asp:listbox
          id="ListBox1"
          runat="server"
          datasourceid="SqlDataSource1"
          datatextfield="LastName">
      </asp:listbox></p>

    </form>
  </body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">

      <p><asp:dropdownlist
          id="DropDownList1"
          runat="server"
          autopostback="True">
          <asp:listitem selected="True">Sales Representative</asp:listitem>
          <asp:listitem>Sales Manager</asp:listitem>
          <asp:listitem>Vice President, Sales</asp:listitem>
      </asp:dropdownlist></p>

      <asp:sqldatasource
          id="SqlDataSource1"
          runat="server"
          connectionstring="<%$ ConnectionStrings:MyNorthwind%>"
          selectcommand="SELECT LastName FROM Employees WHERE Title = @Title">
          <selectparameters>
              <asp:controlparameter name="Title" controlid="DropDownList1" propertyname="SelectedValue"/>
          </selectparameters>
      </asp:sqldatasource>

      <p><asp:listbox
          id="ListBox1"
          runat="server"
          datasourceid="SqlDataSource1"
          datatextfield="LastName">
      </asp:listbox></p>

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

Poniższy przykład przypomina poprzedni, ale używa kodu zamiast znaczników. Gdy strona ładuje się po raz pierwszy, kontrolka DropDownList nie ma wybranej wartości, a DefaultValue właściwość Parameter obiektu jest używana.

<%@ Page Language="C#" CodeFile="param1acs.aspx.cs" Inherits="param1acs_aspx" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:DropDownList
          runat="server"
          AutoPostBack="True"
          id="DropDownList1">
            <asp:ListItem Value="USA">USA</asp:ListItem>
            <asp:ListItem Value="UK">UK</asp:ListItem>
         </asp:DropDownList>

        <asp:DataGrid
          runat="server"
          id="DataGrid1" />    
    </div>
    </form>
</body>
</html>
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="param1avb.aspx.vb" Inherits="param1avb_aspx" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:DropDownList
          runat="server"
          AutoPostBack="True"
          id="DropDownList1">
            <asp:ListItem Value="USA">USA</asp:ListItem>
            <asp:ListItem Value="UK">UK</asp:ListItem>
         </asp:DropDownList>

        <asp:DataGrid
          runat="server"
          id="DataGrid1" />    
    </div>
    </form>
</body>
</html>

Poniższy kod przedstawia klasę za kodem dla strony w poprzednim przykładzie.

public partial class param1acs_aspx : System.Web.UI.Page 
{
    private void Page_Load(object sender, System.EventArgs e)
    {
        SqlDataSource sqlSource = new SqlDataSource(
          ConfigurationManager.ConnectionStrings["MyNorthwind"].ConnectionString,
          "SELECT FirstName, LastName FROM Employees WHERE Country = @country;");

        ControlParameter country = new ControlParameter();
        country.Name = "country";
        country.Type = TypeCode.String;
        country.ControlID = "DropDownList1";
        country.PropertyName = "SelectedValue";

        // If the DefaultValue is not set, the DataGrid does not
        // display anything on the first page load. This is because
        // on the first page load, the DropDownList has no
        // selected item, and the ControlParameter evaluates to
        // String.Empty.
        country.DefaultValue = "USA";

        sqlSource.SelectParameters.Add(country);

        // Add the SqlDataSource to the page controls collection.
        Page.Controls.Add(sqlSource);

        DataGrid1.DataSource = sqlSource;
        DataGrid1.DataBind();
    }
}
Partial Class param1avb_aspx
   Inherits System.Web.UI.Page
    Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)

        Dim sqlSource As SqlDataSource

        sqlSource = New SqlDataSource(ConfigurationManager.ConnectionStrings("MyNorthwind").ConnectionString, "SELECT FirstName, LastName FROM Employees WHERE Country = @country;")
        Dim country As New ControlParameter()
        country.Name = "country"
        country.Type = TypeCode.String
        country.ControlID = "DropDownList1"
        country.PropertyName = "SelectedValue"
        ' If the DefaultValue is not set, the DataGrid does not
        ' display anything on the first page load. This is because
        ' on the first page load, the DropDownList has no
        ' selected item, and the ControlParameter evaluates to
        ' String.Empty.
        country.DefaultValue = "USA"
        sqlSource.SelectParameters.Add(country)

        ' Add the SqlDataSource to the page controls collection.
        Page.Controls.Add(sqlSource)


        DataGrid1.DataSource = sqlSource
        DataGrid1.DataBind()

    End Sub
End Class

W poniższym przykładzie kodu pokazano, jak rozszerzyć klasę w Parameter celu utworzenia nowego typu parametru, który może być używany przez kontrolki źródła danych i inne kontrolki w scenariuszach powiązania danych. Kontrolka źródła danych może używać parametru StaticParameter do powiązania z wartością dowolnego obiektu, zazwyczaj ciągu, zadeklarowanego na stronie formularzy sieci Web.

namespace Samples.AspNet {

  using System;
  using System.ComponentModel;
  using System.Security.Permissions;
  using System.Web;
  using System.Web.UI;
  using System.Web.UI.WebControls;

  [AspNetHostingPermission(SecurityAction.Demand, Level=AspNetHostingPermissionLevel.Minimal)]
  public class StaticParameter : Parameter {

    public StaticParameter() {
    }
    // The StaticParameter(string, object) constructor
    // initializes the DataValue property and calls the
    // Parameter(string) constructor to initialize the Name property.
    public StaticParameter(string name, object value) : base(name) {
      DataValue = value;
    }
    // The StaticParameter(string, TypeCode, object) constructor
    // initializes the DataValue property and calls the
    // Parameter(string, TypeCode) constructor to initialize the Name and
    // Type properties.
    public StaticParameter(string name, TypeCode type, object value) : base(name, type) {
      DataValue = value;
    }
    // The StaticParameter copy constructor is provided to ensure that
    // the state contained in the DataValue property is copied to new
    // instances of the class.
    protected StaticParameter(StaticParameter original) : base(original) {
      DataValue = original.DataValue;
    }

    // The Clone method is overridden to call the
    // StaticParameter copy constructor, so that the data in
    // the DataValue property is correctly transferred to the
    // new instance of the StaticParameter.
    protected override Parameter Clone() {
      return new StaticParameter(this);
    }
    // The DataValue can be any arbitrary object and is stored in ViewState.
    public object DataValue {
      get {
        return ViewState["Value"];
      }
      set {
        ViewState["Value"] = value;
      }
    }
    // The Value property is a type safe convenience property
    // used when the StaticParameter represents string data.
    // It gets the string value of the DataValue property, and
    // sets the DataValue property directly.
    public string Value {
      get {
        object o = DataValue;
        if (o == null || !(o is string))
          return String.Empty;
        return (string)o;
      }
      set {
        DataValue = value;
        OnParameterChanged();
      }
    }

    // The Evaluate method is overridden to return the
    // DataValue property instead of the DefaultValue.
    protected override object Evaluate(HttpContext context, Control control) {

      if (context.Request == null)
          return null;

      return DataValue;
    }
  }
}
Imports System.ComponentModel
Imports System.Security.Permissions
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls

Namespace Samples.AspNet

<AspNetHostingPermission(SecurityAction.Demand, Level:=AspNetHostingPermissionLevel.Minimal)> _
Public Class StaticParameter
   Inherits Parameter


   Public Sub New()
   End Sub

  ' The StaticParameter(string, object) constructor
  ' initializes the DataValue property and calls the
  ' Parameter(string) constructor to initialize the Name property.
   Public Sub New(name As String, value As Object)
      MyBase.New(name)
      DataValue = value
   End Sub

   ' The StaticParameter(string, TypeCode, object) constructor
   ' initializes the DataValue property and calls the
   ' Parameter(string, TypeCode) constructor to initialize the Name and
   ' Type properties.
   Public Sub New(name As String, type As TypeCode, value As Object)
      MyBase.New(name, type)
      DataValue = value
   End Sub
   ' The StaticParameter copy constructor is provided to ensure that
   ' the state contained in the DataValue property is copied to new
   ' instances of the class.
   Protected Sub New(original As StaticParameter)
      MyBase.New(original)
      DataValue = original.DataValue
   End Sub

   ' The Clone method is overridden to call the
   ' StaticParameter copy constructor, so that the data in
   ' the DataValue property is correctly transferred to the
   ' new instance of the StaticParameter.
   Protected Overrides Function Clone() As Parameter
      Return New StaticParameter(Me)
   End Function

   ' The DataValue can be any arbitrary object and is stored in ViewState.
   Public Property DataValue() As Object
      Get
         Return ViewState("Value")
      End Get
      Set
         ViewState("Value") = value
      End Set
   End Property
   ' The Value property is a type safe convenience property
   ' used when the StaticParameter represents string data.
   ' It gets the string value of the DataValue property, and
   ' sets the DataValue property directly.
   Public Property Value() As String
      Get
         Dim o As Object = DataValue
         If o Is Nothing OrElse Not TypeOf o Is String Then
            Return String.Empty
         End If
         Return CStr(o)
      End Get
      Set
         DataValue = value
         OnParameterChanged()
      End Set
   End Property
   ' The Evaluate method is overridden to return the
   ' DataValue property instead of the DefaultValue.
   Protected Overrides Function Evaluate(context As HttpContext, control As Control) As Object
      If context Is Nothing Then
          Return Nothing
      Else
          Return DataValue
      End If
   End Function
End Class

End Namespace ' Samples.AspNet

Uwagi

Klasa Parameter reprezentuje parametr w sparametryzowanym zapytaniu SQL, wyrażeniu filtrowania lub wywołaniu metody obiektu biznesowego, którego ASP.NET kontrolka źródła danych używa do wybierania, filtrowania lub modyfikowania danych. Parameter obiekty są zawarte w ParameterCollection obiekcie. Parameter obiekty są oceniane w czasie wykonywania, aby powiązać wartości zmiennych, które reprezentują z dowolną metodą używaną przez kontrolkę źródła danych do interakcji z danymi.

Użyj klas, które pochodzą z Parameter kontrolek źródła danych i powiązanych z danymi, aby tworzyć aplikacje danych oparte na sieci Web. Te klasy parametrów są używane przez kontrolki źródła danych do powiązania określonych rodzajów wartości znalezionych w aplikacjach internetowych z symbolami zastępczymi w ciągach zapytań SQL, parametrami metody obiektu biznesowego i nie tylko. W poniższej tabeli wymieniono typy parametrów uwzględnione w ASP.NET.

ControlParameter Wiąże dowolną publiczną właściwość kontrolki serwera sieci Web.
FormParameter Tworzy powiązanie pola formularza.
SessionParameter Tworzy powiązanie pola stanu sesji.
RouteParameter Tworzy powiązanie parametru adresu URL trasy.
CookieParameter Tworzy powiązanie pola pliku cookie.
QueryStringParameter Tworzy powiązanie parametru ciągu zapytania.
ProfileParameter Tworzy powiązanie pola profilu.

Rozszerz klasę bazową Parameter , jeśli chcesz zaimplementować własne niestandardowe typy parametrów.

Parameter obiekty są bardzo proste: mają Name właściwość i Type , mogą być reprezentowane deklaratywnie i mogą śledzić stan wielu żądań HTTP. Wszystkie parametry obsługują DefaultValue właściwość, w przypadkach, gdy parametr jest powiązany z wartością, ale wartość jest obliczana null w czasie wykonywania.

W przypadku używania kolekcji Parameter obiektów z kontrolą źródła danych ich kolejność w kolekcji może mieć znaczenie. Aby uzyskać więcej informacji na temat używania parametrów, zobacz Using Parameters with the SqlDataSource Control (Używanie parametrów za pomocą kontrolki SqlDataSource) i Using Parameters with the ObjectDataSource Control (Używanie parametrów za pomocą kontrolki SqlDataSource ) i Using Parameters with the ObjectDataSource Control (Używanie parametrów za pomocą kontrolki ObjectDataSource).

Konstruktory

Parameter()

Inicjuje Parameter nowe domyślne wystąpienie klasy.

Parameter(Parameter)

Inicjuje nowe wystąpienie Parameter klasy z wartościami oryginalnego, określonego wystąpienia.

Parameter(String)

Inicjuje Parameter nowe wystąpienie klasy przy użyciu określonej nazwy.

Parameter(String, DbType)

Inicjuje Parameter nowe wystąpienie klasy przy użyciu określonej nazwy i typu bazy danych.

Parameter(String, DbType, String)

Inicjuje Parameter nowe wystąpienie klasy przy użyciu określonej nazwy, określonego typu bazy danych i określonej wartości dla jej DefaultValue właściwości.

Parameter(String, TypeCode)

Inicjuje Parameter nowe wystąpienie klasy przy użyciu określonej nazwy i typu.

Parameter(String, TypeCode, String)

Inicjuje Parameter nowe wystąpienie klasy przy użyciu określonej nazwy, określonego typu i określonego ciągu dla jego DefaultValue właściwości.

Właściwości

ConvertEmptyStringToNull

Pobiera lub ustawia wartość wskazującą, czy wartość, Parameter z którą obiekt jest powiązany, powinna zostać przekonwertowana na null wartość , jeśli jest Emptyto .

DbType

Pobiera lub ustawia typ bazy danych parametru.

DefaultValue

Określa wartość domyślną parametru, jeśli wartość parametru jest powiązana z niezainicjowanym podczas wywoływania Evaluate(HttpContext, Control) metody.

Direction

Wskazuje, czy Parameter obiekt jest używany do powiązania wartości z kontrolką, czy kontrolki można użyć do zmiany wartości.

IsTrackingViewState

Pobiera wartość wskazującą, czy Parameter obiekt zapisuje zmiany w stanie widoku.

Name

Pobiera lub ustawia nazwę parametru.

Size

Pobiera lub ustawia rozmiar parametru.

Type

Pobiera lub ustawia typ parametru.

ViewState

Pobiera słownik informacji o stanie, który umożliwia zapisanie i przywrócenie stanu Parameter widoku obiektu w wielu żądaniach dla tej samej strony.

Metody

Clone()

Zwraca duplikat bieżącego Parameter wystąpienia.

ConvertDbTypeToTypeCode(DbType)

Konwertuje DbType wartość na równoważną TypeCode wartość.

ConvertTypeCodeToDbType(TypeCode)

Konwertuje TypeCode wartość na równoważną DbType wartość.

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
Evaluate(HttpContext, Control)

Aktualizuje i zwraca wartość Parameter obiektu.

GetDatabaseType()

DbType Pobiera wartość równoważną typowi CLR bieżącego Parameter wystąpienia.

GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
LoadViewState(Object)

Przywraca wcześniej zapisany stan widoku źródła danych.

MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
OnParameterChanged()

Wywołuje metodę OnParametersChanged(EventArgs) kolekcji ParameterCollection zawierającej Parameter obiekt .

SaveViewState()

Zapisuje zmiany Parameter stanu widoku obiektu od momentu opublikowania strony z powrotem na serwerze.

SetDirty()

Oznacza obiekt tak Parameter , aby jego stan był rejestrowany w stanie widoku.

ToString()

Konwertuje wartość tego wystąpienia na jego równoważną reprezentację w postaci ciągu.

TrackViewState()

Parameter Powoduje, że obiekt śledzi zmiany stanu widoku, dzięki czemu można je przechowywać w obiekcie kontrolki ViewState i utrwalać w żądaniach dla tej samej strony.

Jawne implementacje interfejsu

ICloneable.Clone()

Zwraca duplikat bieżącego Parameter wystąpienia.

IStateManager.IsTrackingViewState

Pobiera wartość wskazującą, czy Parameter obiekt zapisuje zmiany w stanie widoku.

IStateManager.LoadViewState(Object)

Przywraca wcześniej zapisany stan widoku źródła danych.

IStateManager.SaveViewState()

Zapisuje zmiany Parameter stanu widoku obiektu od momentu opublikowania strony z powrotem na serwerze.

IStateManager.TrackViewState()

Parameter Powoduje, że obiekt śledzi zmiany stanu widoku, dzięki czemu można je przechowywać w obiekcie kontrolki ViewState i utrwalać w żądaniach dla tej samej strony.

Dotyczy

Zobacz też