基于另一个控件确定RangeValidator最大值

本文关键字:RangeValidator 最大值 控件 另一个 | 更新日期: 2023-09-27 18:25:55

我有一个GridView,它包含一个TemplateField和一个TextBox(可以说是永久处于编辑模式)。当TextBoxChanged事件触发时,GridViewRow中的数据会在数据库中自动更新。我正在寻找一种方法,将RangeValidator添加到TextBox中,这样它就不会允许GridView中同一行的值大于BoundField。

我有其他验证器在处理这个TextBox,包括手动设置的RangeValidator。然而,在我所有的谷歌搜索中,我还没有发现任何让RangeValidator从TextBox中动态提取的例子,所以我不确定这是否可能。如果它可以从TextBox中提取,有没有办法从GridView的BoundField中获取该值?

基于另一个控件确定RangeValidator最大值

弄清楚了如何在GridView中实现它(仍然不知道它在GridView之外如何工作)。基本上,它可以归结为在数据绑定部分添加最大值(类似于将值绑定到TextBox本身):

<asp:RangeValidator ID="ShareTextBoxRangeValidator" runat="server" 
    ErrorMessage="!" ControlToValidate="ShareTextBox" 
    MaximumValue='<%# Eval("Cost") %>' MinimumValue="0" 
    Display="Dynamic" ClientIDMode="Predictable" Type="Double"/>

我发现BindEval工作得同样好,但将其保留在Eval,因为它不会更新数据。

关于Validator和GridViews的另一个注意事项:如果您已将页面的ClientIDMode设置为Static,则必须在Validator和要验证的控件上将其显式设置回Predictable(或AutoID)。否则,您将得到密钥冲突错误。