2011-08-05 3 views
6

Quiero establecer un Validador de rango en un cuadro de texto para evitar que alguien ordene más producto del que está disponible. Tengo la cantidad disponible disponible almacenada en una base de datos y he vinculado la propiedad de valor máximo del Validador de Rango al campo en la base de datos.¿Cómo establecer programáticamente el valor máximo en un validador de rango?

<asp:RangeValidator ID="RangeValidator1" runat="server" 
        ControlToValidate="tbQuantity" Display="Dynamic" ErrorMessage = "Can't Order More Than Quantity." 
        ForeColor="Red" MaximumValue='<%# Eval("Quantity") %>' MinimumValue="0"></asp:RangeValidator> 

Sin embargo, cuando depuro el programa obtengo algunos resultados inesperados.

La cantidad es 17. y 1 no desencadena el mensaje de error, pero 2-9 lo hace y 10-17 no lo activa pero 18 y arriba lo hacen. Supongo que esto tiene algo que ver con el hecho de que está comparando cadenas, pero no estoy seguro de cómo cambiarlo para comparar números.

Respuesta

5

El rango predeterminado tipo de validación es una cadena, cambie la propiedad Type a Integer

<asp:RangeValidator 
    ID="RangeValidator1" runat="server" 
    ControlToValidate="tbQuantity" 
    Display="Dynamic" 
    ErrorMessage="Can't Order More Than Quantity." 
    ForeColor="Red" 
    MaximumValue='<%# Eval("Quantity") %>' 
    MinimumValue="0" 
    Type="Integer" /> // <-- add type property of integer 

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.basecomparevalidator.type.aspx

3

¿Ha intentado establecer el atributo tipo en entero?

<asp:RangeValidator ID="RangeValidator1" runat="server" 
        ControlToValidate="tbQuantity" Display="Dynamic" 
        ErrorMessage="Can't Order More Than Quantity." 
        ForeColor="Red" MaximumValue='<%# Eval("Quantity") %>' 
        MinimumValue="0" Type="Integer"> 
</asp:RangeValidator>  

Más información se puede encontrar aquí (no deje que el BaseCompareValidator título en el título que tirar, Tipo es una propiedad válida para el control RangeValidator):

BaseCompareValidator.Type Property

0
protected void RangeValidator5_Init(object sender, EventArgs e) 
{ 
    ((RangeValidator)sender).MaximumValue = DateTime.Today.ToString("yyyy/MM/dd"); 
    ((RangeValidator)sender).MinimumValue = DateTime.Today.AddYears(-100).ToString("yyyy/MM/dd"); 
} 
Cuestiones relacionadas