基于另一个控件确定RangeValidator最大值
本文关键字:RangeValidator 最大值 控件 另一个 | 更新日期: 2023-09-27 18:25:55
我有一个GridView,它包含一个TemplateField和一个TextBox(可以说是永久处于编辑模式)。当TextBoxChanged事件触发时,GridViewRow中的数据会在数据库中自动更新。我正在寻找一种方法,将RangeValidator添加到TextBox中,这样它就不会允许GridView中同一行的值大于BoundField。
我有其他验证器在处理这个TextBox,包括手动设置的RangeValidator。然而,在我所有的谷歌搜索中,我还没有发现任何让RangeValidator从TextBox中动态提取的例子,所以我不确定这是否可能。如果它可以从TextBox中提取,有没有办法从GridView的BoundField中获取该值?
弄清楚了如何在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
,因为它不会更新数据。
关于Validator和GridViews的另一个注意事项:如果您已将页面的ClientIDMode
设置为Static,则必须在Validator和要验证的控件上将其显式设置回Predictable(或AutoID)。否则,您将得到密钥冲突错误。