我有一个GridView,其中包含一个带有TextBox的TemplateField(永远处于编辑模式,你可能会说)。触发TextBoxChanged事件时,GridViewRow中的数据会自动在数据库中更新。我正在寻找一种方法来向TextBox添加一个RangeValidator,这样它就不会允许大于GridView中同一行的BoundField的值。
我有其他验证器在这个TextBox上工作,包括一个手动设置的RangeValidator。但是,在我的所有谷歌搜索中,我还没有找到任何使用TextBox动态拉取RangeValidator的例子,所以我不确定这是否可行。如果它可以从TextBox中提取,有没有办法从GridView的BoundField获取该值?
答案 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"/>
我发现Bind
和Eval
的效果相同,但保留在Eval
,因为它不会更新数据。
关于Validators和GridViews的进一步说明:如果您已将页面的ClientIDMode
设置为Static,则必须在Validator和要验证的控件上将其显式设置回Predictable(或AutoID)。否则,您将收到密钥违规错误。