根据另一个控件确定RangeValidator最大值

时间:2013-08-01 19:32:02

标签: c# asp.net gridview rangevalidator

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

我有其他验证器在这个TextBox上工作,包括一个手动设置的RangeValidator。但是,在我的所有谷歌搜索中,我还没有找到任何使用TextBox动态拉取RangeValidator的例子,所以我不确定这是否可行。如果它可以从TextBox中提取,有没有办法从GridView的BoundField获取该值?

1 个答案:

答案 0 :(得分:0)

想出如何在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,因为它不会更新数据。

关于Validators和GridViews的进一步说明:如果您已将页面的ClientIDMode设置为Static,则必须在Validator和要验证的控件上将其显式设置回Predictable(或AutoID)。否则,您将收到密钥违规错误。