QueryStringParameter Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Enlaza el valor de un campo de la cadena de consulta de la solicitud HTTP a un objeto de parámetro.
public ref class QueryStringParameter : System::Web::UI::WebControls::Parameter
public class QueryStringParameter : System.Web.UI.WebControls.Parameter
type QueryStringParameter = class
inherit Parameter
Public Class QueryStringParameter
Inherits Parameter
- Herencia
Ejemplos
En el ejemplo siguiente se muestra cómo crear un QueryStringParameter objeto que se usará como filtro al mostrar datos en un GridView control . El objeto se agrega QueryStringParameter a la AccessDataSource colección del FilterParameters control. El objeto de parámetro enlaza el valor del campo de cadena de consulta denominado country
a su FilterExpression cadena. Dado que no se especifica ninguna DefaultValue propiedad para el parámetro , si no se pasa ningún campo denominado country
con la cadena de consulta, el AccessDataSource control produce una NullReferenceException excepción. Si se pasa un campo denominado country
pero no tiene ningún valor, el GridView control no muestra datos.
<%@ Page language="C#"%>
<!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" 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="VB"%>
<!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" 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>
En el ejemplo siguiente se muestra cómo crear un QueryStringParameter objeto para mostrar datos de una base de datos de Access mediante una consulta SQL parametrizada. El AccessDataSource objeto recupera los registros que a continuación se muestran en un GridView control . El GridView control también es editable y permite a los usuarios actualizar el estado de los pedidos en la tabla Pedidos de Northwind Traders.
<%@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 xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>ASP.NET Example</title>
</head>
<body>
<form id="form1" 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="VB" %>
<%@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 Sub UpdateRecords(source As Object, e As EventArgs)
' 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.
Dim cb As CheckBox
Dim row As GridViewRow
For Each row In GridView1.Rows
cb = CType(row.Cells(0).Controls(1), CheckBox)
If cb.Checked Then
Dim oid As String
oid = CType(row.Cells(1).Text, String)
Dim param1 As New Parameter("date", TypeCode.DateTime, DateTime.Now.ToString())
MyAccessDataSource.UpdateParameters.Add(param1)
Dim param2 As New Parameter("orderid", TypeCode.String, oid)
MyAccessDataSource.UpdateParameters.Add(param2)
MyAccessDataSource.Update()
MyAccessDataSource.UpdateParameters.Clear()
End If
Next
End Sub ' UpdateRecords
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>ASP.NET Example</title>
</head>
<body>
<form id="form1" 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>
Comentarios
Puede usar la QueryStringParameter clase para enlazar el valor de un campo que se pasa como parte de una cadena de consulta de solicitud HTTP a un parámetro que se usa en una consulta o comando con parámetros. El campo se recupera de la QueryString colección.
Los controles que enlazan datos al parámetro pueden producir una excepción si se hace referencia a un QueryStringParameter objeto, pero no se pasa ningún par de nombre y valor de cadena de consulta correspondiente. Del mismo modo, podrían no mostrar datos si el nombre del campo de cadena de consulta se pasa sin un valor correspondiente. Para evitar estas situaciones, establezca la DefaultValue propiedad cuando corresponda.
La QueryStringParameter clase proporciona la QueryStringField propiedad , que identifica el nombre del valor de cadena de consulta al que se va a enlazar. También proporciona las propiedades que se heredan de la Parameter clase .
Importante
La QueryStringParameter clase no valida el valor que se pasa; proporciona el valor sin procesar. Sin embargo, puede validar el valor de un QueryStringParameter objeto en un control de origen de datos. Para ello, controle el Selecting
evento , Updating
, Inserting
o Deleting
del control de origen de datos y compruebe el valor del parámetro en el controlador de eventos. Si el valor del parámetro no supera las pruebas de validación, puede cancelar la operación de datos estableciendo la Cancel propiedad de la clase asociada CancelEventArgs en true
.
Constructores
QueryStringParameter() |
Inicializa una nueva instancia sin nombre de la clase QueryStringParameter. |
QueryStringParameter(QueryStringParameter) |
Inicializa una nueva instancia de la clase QueryStringParameter, utilizando los valores de la instancia especificada por el parámetro |
QueryStringParameter(String, DbType, String) |
Inicializa una nueva instancia con nombre de la clase QueryStringParameter, utilizando el campo de cadena de consulta especificado y el tipo de datos del parámetro. |
QueryStringParameter(String, String) |
Inicializa una nueva instancia con nombre de la clase QueryStringParameter, utilizando la cadena especificada para identificar el campo de cadena de consulta al que se va a enlazar. |
QueryStringParameter(String, TypeCode, String) |
Inicializa una nueva instancia, fuertemente tipada y nombre, de la clase QueryStringParameter, utilizando la cadena especificada para identificar el campo de cadena de consulta al que se va a enlazar. |
Propiedades
ConvertEmptyStringToNull |
Obtiene o establece un valor que indica si el valor al que está enlazado el objeto Parameter debe convertirse a |
DbType |
Obtiene o establece el tipo de base de datos del parámetro. (Heredado de Parameter) |
DefaultValue |
Especifica un valor predeterminado para el parámetro, si el valor al que está enlazado el parámetro no debe estar inicializado cuando se llame al método Evaluate(HttpContext, Control). (Heredado de Parameter) |
Direction |
Indica si el objeto Parameter se utiliza para enlazar un valor a un control o si se puede utilizar el control para cambiar el valor. (Heredado de Parameter) |
IsTrackingViewState |
Obtiene un valor que indica si el objeto Parameter está guardando los cambios en su estado de vista. (Heredado de Parameter) |
Name |
Obtiene o establece el nombre del parámetro. (Heredado de Parameter) |
QueryStringField |
Obtiene o establece el nombre del campo de cadena de consulta al que se enlaza el parámetro. |
Size |
Obtiene o establece el tamaño del parámetro. (Heredado de Parameter) |
Type |
Obtiene o establece el tipo de parámetro. (Heredado de Parameter) |
ValidateInput |
Obtiene o establece si el valor del parámetro de cadena de consulta se valida o no. |
ViewState |
Obtiene un diccionario con información de estado que permite guardar y restaurar el estado de vista de un objeto Parameter en las distintas solicitudes de la misma página. (Heredado de Parameter) |
Métodos
Clone() |
Devuelve un duplicado de la instancia QueryStringParameter actual. |
Equals(Object) |
Determina si el objeto especificado es igual que el objeto actual. (Heredado de Object) |
Evaluate(HttpContext, Control) |
Actualiza y devuelve el valor del objeto QueryStringParameter. |
GetDatabaseType() |
Obtiene el valor DbType que es equivalente al tipo CLR de la instancia Parameter actual. (Heredado de Parameter) |
GetHashCode() |
Sirve como la función hash predeterminada. (Heredado de Object) |
GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
LoadViewState(Object) |
Restaura la vista del origen de datos tal y como se guardó previamente. (Heredado de Parameter) |
MemberwiseClone() |
Crea una copia superficial del Object actual. (Heredado de Object) |
OnParameterChanged() |
Llama al método OnParametersChanged(EventArgs) de la colección ParameterCollection que contiene el objeto Parameter. (Heredado de Parameter) |
SaveViewState() |
Guarda los cambios realizados en el estado de la vista del objeto Parameter desde el momento en que se devolvió la página al servidor. (Heredado de Parameter) |
SetDirty() |
Marca el objeto Parameter para que su estado se registre en el estado de vista. (Heredado de Parameter) |
ToString() |
Convierte el valor de esta instancia en la representación de cadena equivalente. (Heredado de Parameter) |
TrackViewState() |
Hace que el objeto Parameter realice el seguimiento de los cambios en su estado de vista, de modo que puedan almacenarse en el objeto ViewState del control y mantenerse en todas las solicitudes de la misma página. (Heredado de Parameter) |
Implementaciones de interfaz explícitas
ICloneable.Clone() |
Devuelve un duplicado de la instancia Parameter actual. (Heredado de Parameter) |
IStateManager.IsTrackingViewState |
Obtiene un valor que indica si el objeto Parameter está guardando los cambios en su estado de vista. (Heredado de Parameter) |
IStateManager.LoadViewState(Object) |
Restaura la vista del origen de datos tal y como se guardó previamente. (Heredado de Parameter) |
IStateManager.SaveViewState() |
Guarda los cambios realizados en el estado de la vista del objeto Parameter desde el momento en que se devolvió la página al servidor. (Heredado de Parameter) |
IStateManager.TrackViewState() |
Hace que el objeto Parameter realice el seguimiento de los cambios en su estado de vista, de modo que puedan almacenarse en el objeto ViewState del control y mantenerse en todas las solicitudes de la misma página. (Heredado de Parameter) |