【问题标题】:How to control which validators are used in a DataGrid如何控制在 DataGrid 中使用哪些验证器
【发布时间】:2010-10-08 03:02:44
【问题描述】:

我正在用 Asp.Net 1.1 开发一个网页,并有一个允许用户添加、编辑和删除数据库记录的 DataGrid。页脚行包含允许添加新记录的文本框。

我为每一列定义了 元素。我的 aspx 标记中的 FooterItemTemplate 和 EditItemTemplate 元素都包含 RequiredFieldValidator 控件以及文本框。 (见下文)

<asp:TemplateColumn HeaderText="Offer Code">
  <ItemTemplate>
    <%# DataBinder.Eval(Container, "DataItem.OfferCode") %>
  </ItemTemplate>
  <FooterTemplate>
    <asp:TextBox ID="txtNewOfferCode" Runat="server" />
<asp:RequiredFieldValidator ID="reqNewOfferCode" ControlToValidate="txtNewOfferCode" Display="None" ErrorMessage="Please specify 'Offer Code'" Runat="server" />
  </FooterTemplate>
  <EditItemTemplate>
<asp:TextBox id=txtOfferCode Runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.OfferCode") %>' />
<asp:RequiredFieldValidator ID="reqOfferCode" ControlToValidate="txtOfferCode" Display="None" ErrorMessage="Please specify 'Offer Code'" Runat="server" />
  </EditItemTemplate>
</asp:TemplateColumn>

我遇到的问题是,当您尝试编辑现有记录时,页脚行中的空白字段会阻止验证,因此会阻止回发和更新所选行。

【问题讨论】:

    标签: .net asp.net datagrid .net-1.1 requiredfieldvalidator


    【解决方案1】:

    通常,GridView 无法插入新行。你做到了,使用页脚行。当然,当您提交 GridView 时,验证器会阻止该过程,因为该字段为空。当您的 GridView 进入编辑模式并禁用页脚的验证器时,您应该捕获该事件。离开 GridView 编辑模式时不要忘记启用它们。

    【讨论】:

    • 那你如何访问验证器?我没有对它们的编程访问权限。我可以通过 Edit 事件的参数访问 EditItemTemplate 的验证器,但我看不到如何访问 FooterItemTemplate 验证器。
    • 如果您有权访问 EditItemTemplate 对象,您将能够访问 GridView,然后访问 FooterTemplate。这将给出丑陋的代码:-(也许最好的办法是停止使用 FooterTemplate 并在要插入新记录时向 GridView 添加一个空行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-23
    • 1970-01-01
    • 1970-01-01
    • 2018-12-02
    • 1970-01-01
    • 2018-04-12
    • 1970-01-01
    相关资源
    最近更新 更多