Определите максимальное значение RangeValidator на основе другого элемента управления
У меня есть GridView, который содержит TemplateField с TextBox в нем (можно сказать, постоянно в режиме редактирования). Данные из GridViewRow обновляются в базе данных автоматически при возникновении события TextBoxChanged. Я ищу способ добавить RangeValidator в TextBox, чтобы он не позволял значения, превышающие BoundField из той же строки в GridView.
У меня есть другие валидаторы, работающие над этим TextBox, в том числе вручную установленный RangeValidator. Однако во всех моих поисках я не нашел примеров динамического извлечения RangeValidator из TextBox, поэтому я не уверен, возможно ли это вообще. Если он может извлечь из TextBox, есть ли способ получить это значение из BoundField GridView?
1 ответ
Выяснили, как это сделать в GridView (до сих пор не знаю, как это может работать за пределами GridView). По сути, все сводится к добавлению в раздел привязки данных, в который будет введено максимальное значение (аналогично привязке значения к самому TextBox):
<asp:RangeValidator ID="ShareTextBoxRangeValidator" runat="server"
ErrorMessage="!" ControlToValidate="ShareTextBox"
MaximumValue='<%# Eval("Cost") %>' MinimumValue="0"
Display="Dynamic" ClientIDMode="Predictable" Type="Double"/>
я нашел это Bind
а также Eval
работать одинаково хорошо, но оставил его на Eval
так как он не будет обновлять данные.
Еще одно замечание о Validators и GridView: если вы установили свои страницы ClientIDMode
в Static, вы должны явно установить его обратно в Predictable (или AutoID) как на валидаторе, так и на проверяемом элементе управления. В противном случае вы получите ошибки нарушения ключа.