如何仅在单击提交按钮时才能使必填字段工作?

时间:2017-08-09 14:59:47

标签: c# asp.net

我正在创建一个带有表的表单,用户将注册所有要放​​在那里的客户端。我正在为两个文本框使用必需的字段验证器,用户必须填写信息。但问题是当我想用新信息更新文本框时,必填字段要求我用新文本填充它们,而这些不是我正在编辑的文本框。

问题出现在这里:

如果我想要更新其他文本框,则表单要求我填写下面的其他文本框,但我希望在更新文本框时,它不需要我填充其他文本框。

我的代码:

 <asp:TemplateField HeaderText="Nome do Cliente">
                            <ItemTemplate>
                                <asp:Label ID="lblClienteNome" runat="server" Text='<%# Eval("cliente_nome")%>'/>
                            </ItemTemplate>

                            <EditItemTemplate>                         
                                <asp:TextBox ID="txtclienteNome" runat="server" Text='<%# Eval("cliente_nome")%>'/>                           
                            </EditItemTemplate>

                            <FooterTemplate>
                                    <asp:TextBox ID="txtbnome" runat="server" />
                                <asp:RequiredFieldValidator ID="valName" ControlToValidate = "txtbnome"
runat="server" ErrorMessage="*Required" />
                            </FooterTemplate>
                        </asp:TemplateField>

                        <asp:TemplateField HeaderText = "E-mail do Cliente">
                            <ItemTemplate>
                                <asp:Label ID="lblClienteEmail" runat="server" Text='<%# Eval("cliente_email")%>'></asp:Label>
                            </ItemTemplate>

                            <EditItemTemplate>
                                <asp:TextBox ID="txtclienteEmail" runat="server" Text='<%# Eval("cliente_email")%>'/>
                            </EditItemTemplate>

                            <FooterTemplate>
                                <asp:TextBox ID="txtbemail" runat="server"/>
                                 <asp:RequiredFieldValidator ID="RequiredFieldValidator1" ControlToValidate = "txtbemail"
runat="server" ErrorMessage="*Required" />
                                 <asp:LinkButton ID="LinkButton1" CommandName="AddNew" runat="server" CssClass="btn btn-large btn-info pull-right">
                                     <i class="glyphicon glyphicon-plus"></i> &nbsp; Adicionar
                                 </asp:LinkButton>
                            </FooterTemplate>

在更新字段时,如何让它不要求我填写其他文本框?

2 个答案:

答案 0 :(得分:2)

您可以创建自定义属性:

val rdd1  = sc.parallelize( List( "a", "b", "c", "d", "e")) 
val rdd1a = rdd1.map(x => (x, 110, 110 - x.toByte )).collect()

用法:

public class ButtonRequiredAttribute : RequiredAttribute
{
    private readonly string _buttonName;

    public ButtonRequiredAttribute(string buttonName)
    {
        _buttonName = buttonName;
    }

    public override bool IsValid(object value)
    {
        var form = HttpContext.Current.Request.Form;

        //only validating if "add"-Button is pressed
        if (form[_buttonName] != null)
        {
            return base.IsValid(value);
        }

        //When no "add"-Button is pressed, no validation is needed
        return true;
    }

}

答案 1 :(得分:0)

这里的所有答案对我都非常有用,但我找到了解决问题的简单方法。

我忘了显示两个按钮的代码,更新和删除,我只是使用CausesValidation的属性让我点击它们时,不需要填写要更新的文本或删除。

所以,我带有两个按钮的代码就是这样的:

<asp:CommandField ShowEditButton="True" ShowDeleteButton="true" CausesValidation="False"/>

有关更多信息,我在此链接中发现它有用:

https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.button.causesvalidation.aspx