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?