Динамически получить максимальное значение валидатора диапазона из базы данных 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, но ошибка сохраняется. Пожалуйста, помогите мне, так как это заняло несколько часов моего времени, пытаясь выяснить, где все идет не так.
1 ответ
Валидатор диапазона - управление сервером рунета, и это <%=
Заявление опаздываете. это работает, когда рендеринг страницы.
Вы можете использовать "<% #" это утверждение. и свяжите свой валидатор диапазона.
<%#maxValue %>
и вам нужно вызвать валидаторов или валидаторов любых родителей DataBind()
метод.
maxValue = Convert.ToInt32(TotalQuantity);
RangeValidator1.DataBind();
ИЛИ просто установите RangeValidator1.MaximumValue напрямую:)
RangeValidator1.MaximumValue = Convert.ToInt32(TotalQuantity);