Quantcast
Channel: Últimos conteúdos
Viewing all articles
Browse latest Browse all 14190

Como utilizar dois "Custom Validator" na mesma página? C#

$
0
0

Pessoal,

 

tenho uma WebForm com um Formview e preciso validar alguns campos utilizando o Custom Validator.

 

em um validador, vou fazer comparação se já existe determinado usuário cadastrado no banco de dados utilizando um textbox de nome completo e um textbox de apelido. não tenho campo de cpf. (esse validador já está funcionando).

 

porém, preciso fazer uma validação de data e hora inicial ser menor ou igual à data e hora final e consigo usar o validador sem problemas em uma outra página.

 

meu problema é que, agora, tenho uma única página em que tenho que fazer essas comparações.

queria usar dois Custom Validator nessa tela, mas não sei como usar.

 

tenho uma função javascript para o lado cliente:

function DataValidator_ClientValidate(source,
                                      clientside_arguments) {
            clientside_arguments.IsValid = false;

            jQuery.ajax({
                type: "POST",
                async: false,
                url: "detContato.aspx/IsDataValid",
                data: "{Contato: '" + clientside_arguments.Value + "', ContatoCompleto: '" + $("[id*=tbxContatoCompleto]").val() + "'}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (msg) {
                    clientside_arguments.IsValid = msg.d;
                },
                error: function (msg) {
                    clientside_arguments.IsValid = false;
                }
            });

            return clientside_arguments.IsValid;

além da função javascript, tenho o validator associado ao meu campo txbContato:

<asp:CustomValidator ID="DataValidator" runat="server" ClientValidationFunction="DataValidator_ClientValidate" ControlToValidate="tbxContato" Display="None" ErrorMessage="Esse Contato já existe!" meta:resourcekey="DataValidatorResource1" OnServerValidate="DataValidator_ServerValidate" SetFocusOnError="True" ValidationGroup="valgroup" />
                                    <ajaxtoolkit:ValidatorCalloutExtender ID="DataValidatorE" runat="server" CloseImageUrl="~/Layout/Imagens/close_12x12.png" CssClass="customCalloutStyle" PopupPosition="BottomRight" TargetControlID="DataValidator" WarningIconImageUrl="~/Layout/Imagens/excl.png" />

e, no arquivo .cs tenho os métodos:

protected void btnGravar_Click(object sender, EventArgs e)
    {
        if (IsValid)
        {
            // bla bla bla
        }
        else
        {
            ((CustomValidator)FormView1.FindControl("DataValidator")).IsValid = false;
        }
    }

public static bool IsDataValid(string Contato, string ContatoCompleto)
    {
        try
        {

            SqlConnection conex = DBUtils.CreateConnection();
            SqlCommand cmd = new SqlCommand();

            string cod = null;
            int result = 0;

            //Pega a QueryString no método do tipo static
            NameValueCollection collection = GetQueryStringCollection(HttpContext.Current.Request.UrlReferrer.Query);
            if (collection != null && collection.Count > 0)
            {
                cod = HttpContext.Current.Server.UrlDecode(collection["cod"]);
            }

            if (cod == "0")
            {
                result = Queries.selectValidaContato(Contato, ContatoCompleto);
            }
            else if (cod != "0")
            {
                result = Queries.selectValidaContato(Contato, ContatoCompleto, cod);
            }

            if (result == 0)
                return true;
            else
                return false;
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    protected void DataValidator_ServerValidate(object sender, ServerValidateEventArgs e)
    {
        e.IsValid = IsDataValid(e.Value, ((TextBox)FormView1.FindControl("tbxContatoCompleto")).Text);
    }

 

Não sei como utilizar os dois validadores na mesma página.

Já tentei alterar o nome dos métodos/funções, mas não funcionou como deveria.

Acredito que seja por causa do "IsValid", que não tenho nem ideia de como diferenciá-lo de acordo com o validador.

Não sei se fui muito claro em minha dúvida, mas é: basicamente como utlizar dois custom validator na mesma página?


Viewing all articles
Browse latest Browse all 14190

Latest Images