从数据库 asp.net 动态获取范围验证器的最大值并转换为 int
dynamically get the maximum value of range validator from database asp.net and convert to int
我试图从数据库中获取库存产品的总数量,并在将产品添加到购物车时将其用作范围验证器的最大值。
我在前端使用了代码:
<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 类型。但是页面上的错误显示
"The MaximumValue <%=maxValue %> cannot be less than the MinimumValue 1 of RangeValidator1".
我也试了几次 adding/removing Type="Integer" 到 RangeValidator 但错误仍然存在。请帮助我,因为这已经占用了我几个小时的时间来找出问题所在。
范围验证器是 runet 服务器控件,这个 <%=
声明 运行 太晚了。页面渲染时运行。
你可以使用'<%#'这个语句。并绑定您的范围验证器。
<%#maxValue %>
并且您需要调用验证器或验证器任何父 DataBind()
方法。
maxValue = Convert.ToInt32(TotalQuantity);
RangeValidator1.DataBind();
或者直接设置 RangeValidator1.MaximumValue :)
RangeValidator1.MaximumValue = Convert.ToInt32(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 类型。但是页面上的错误显示 "The MaximumValue <%=maxValue %> cannot be less than the MinimumValue 1 of RangeValidator1".
我也试了几次 adding/removing Type="Integer" 到 RangeValidator 但错误仍然存在。请帮助我,因为这已经占用了我几个小时的时间来找出问题所在。
范围验证器是 runet 服务器控件,这个 <%=
声明 运行 太晚了。页面渲染时运行。
你可以使用'<%#'这个语句。并绑定您的范围验证器。
<%#maxValue %>
并且您需要调用验证器或验证器任何父 DataBind()
方法。
maxValue = Convert.ToInt32(TotalQuantity);
RangeValidator1.DataBind();
或者直接设置 RangeValidator1.MaximumValue :)
RangeValidator1.MaximumValue = Convert.ToInt32(TotalQuantity);