динамически получить максимальное значение валидатора диапазона из базы данных asp.net и преобразовать в int

Я попытался получить TotalQuantity продукта на складе из базы данных и использовать его как максимальное значение для валидатора диапазона при добавлении продукта в корзину. Я использовал код в интерфейсе:

 <td class="style2">
   QUANTITY<br />
           <asp:TextBox ID="TextBox1" runat="server" ></asp:TextBox>
           <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
               ControlToValidate="TextBox1" ErrorMessage="must fill some value"></asp:RequiredFieldValidator>

           <asp:RangeValidator ID="RangeValidator1" runat="server" 
               ControlToValidate="TextBox1" ErrorMessage="must fill value lesser than the Total Quantity in stock" 
               MaximumValue="<%=maxValue %>" MinimumValue="1" Display="Dynamic" ></asp:RangeValidator>
           <br />

Код бэкенда cs:

 public partial class productDetail : System.Web.UI.Page
{
    public int maxValue=0;
    public int minValue = 1;
     .....
       protected void Page_Load(object sender, EventArgs e)
    {
      //Defined SQL Conn string...
        connection1.Open();
        string cartCmd = "select TotalQuantity from Product where ProductName= \'"+prodName+"\';";
        SqlCommand cmd = new SqlCommand(cartCmd, connection1);
        SqlDataReader readerTotQquantity = cmd.ExecuteReader();
        if (readerTotQquantity .HasRows)
        {
            readerTotQquantity .Read();
            TotalQuantity = readerTotQquantity ["TotalQuantity"].ToString();
        }

        double val = Convert.ToDouble(TotalQuantity);
        maxValue = (int)val;
        // also tried maxValue=Convert.ToInt32(TotalQuantity);
        // tired maxValue=int.Parse(TotalQuantity); etc


        connection1.Close();
     }
}

Я устал печатать значение на панели вывода Visual Studio, и оно показывает правильное значение и тип как System.Int32. но ошибка на странице показывает, что «MaximumValue ‹%=maxValue %> не может быть меньше, чем MinimumValue 1 RangeValidator1».

Я также пытался несколько раз добавлять/удалять Type="Integer" в RangeValidator, но ошибка сохраняется. Пожалуйста, помогите мне, так как это заняло несколько часов моего времени, пытаясь понять, где все идет не так.


person user3387677    schedule 10.03.2017    source источник


Ответы (1)


валидатор диапазона - это сервер управления рунетом, и этот оператор <%= работает слишком поздно для него. его запуск при рендеринге страницы.

вы можете использовать '‹%#' этот оператор. и привяжите свой валидатор диапазона.

<%#maxValue %>

и вам нужно вызывать валидаторы или валидаторы любого родительского DataBind() метода.

maxValue = Convert.ToInt32(TotalQuantity);
RangeValidator1.DataBind();

ИЛИ просто установите RangeValidator1.MaximumValue напрямую :)

RangeValidator1.MaximumValue = Convert.ToInt32(TotalQuantity);
person levent    schedule 10.03.2017
comment
Работал на меня. Большое спасибо! - person user3387677; 10.03.2017