从数据库asp.net动态获取范围验证器的最大值并转换为int

时间:2017-03-10 06:23:34

标签: c# asp.net string-parsing rangevalidator

我试图从数据库中获取库存产品的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&lt;%= maxValue%&gt;不能小于RangeValidator1的MinimumValue 1。”

我还尝试了几次向RangeValidator添加/删除Type =“Integer”,但错误仍然存​​在。请帮助我,因为这花费了我几个小时的时间来弄清楚它出错的地方。

1 个答案:

答案 0 :(得分:1)

范围验证器是runet服务器控件,这个<%=语句运行得太晚了。它在页面渲染时运行。

你可以使用'&lt;%#'这句话。绑定你的范围验证器。

<%#maxValue %>

您需要使用任何父DataBind()方法调用验证器或验证器。

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

或者直接设置RangeValidator1.MaximumValue:)

RangeValidator1.MaximumValue = Convert.ToInt32(TotalQuantity);