0

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

我有其他验证器正在处理这个文本框,包括手动设置的 RangeValidator。但是,在我所有的谷歌搜索中,我没有找到任何使 RangeValidator 从 TextBox 动态拉取的示例,所以我不确定这是否可能。如果它可以从 TextBox 中提取,有没有办法从 GridView 的 BoundField 中获取该值?

4

1 回答 1

0

想出了如何在 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因为它不会更新数据而将其保留。

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

于 2013-08-02T14:49:02.630 回答