none
Error de validación RRS feed

  • Pregunta

  • Hola a todos:

    En un edittemplate

                <asp:TemplateField HeaderText="Mostrar" ItemStyle-CssClass="centro" SortExpression="mostrar">
                    <EditItemTemplate>
                        <asp:checkbox ID="chkmostrar" Checked='<%# Bind("mostrar") %>' runat="server" />
                        <asp:CustomValidator ValidationGroup="valoraciones" ControlToValidate="chkmostrar" Display="Dynamic" ForeColor="red" ErrorMessage="No hay correo a mostrar" OnServerValidate="existe_correo_mostrar" runat="server" /> 
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:label text='<%#iif(eval("mostrar"),"sí","no")%>' runat="server" />
                    </ItemTemplate>
                </asp:TemplateField>

    Me sale error

    No se puede validar el control 'chkmostrar' al que hace referencia la propiedad ControlToValidate de ''.

    He probado a quitar el bind, y no es eso

    ¿Qué sucede?

    Gracias de antemano


    • Editado volar.2014 lunes, 17 de agosto de 2015 20:29
    lunes, 17 de agosto de 2015 19:44

Respuestas

Todas las respuestas

  • Hola:

    ¿no se puede validar un checkbox?

    Este texto de 

    https://msdn.microsoft.com/es-es/library/2e4hd649%28v=vs.80%29.aspx?f=255&MSPPError=-2147217396

    "Los controles de validación comprueban los datos proporcionados por el usuario en los controles SelectionList yTextBox." 

    Gracias de antemano

    lunes, 17 de agosto de 2015 20:40
  • Hola de nuevo:

    Estos son los campos correo y mostrar.

                <asp:TemplateField HeaderText="Correo elec." SortExpression="correo">
                    <EditItemTemplate>
                        <asp:TextBox ID="txtcorreo" MaxLength="80" Text='<%# Bind("correo") %>' runat="server" />
                        <asp:RegularExpressionValidator ForeColor="red" ValidationGroup="valoraciones" ControlToValidate="txtcorreo" ErrorMessage="Correo elec. inválido" Display="None" ValidationExpression="^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$" runat="server" />
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:label text='<%# IIf(Eval("correo") <> "", Eval("correo"), "<span class=""centrado"">no</span>")%>' runat="server" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Mostrar" ItemStyle-CssClass="centro" SortExpression="mostrar">
                    <EditItemTemplate>
                        <asp:checkbox ID="chkmostrar" Checked='<%# Bind("mostrar") %>' runat="server" />
                        <asp:CustomValidator ValidationGroup="valoraciones" ControlToValidate="chkmostrar" Display="Dynamic" ForeColor="red" ErrorMessage="No hay correo a mostrar" OnServerValidate="existe_correo_mostrar" runat="server" /> 
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:label text='<%#iif(eval("mostrar"),"sí","no")%>' runat="server" />
                    </ItemTemplate>
                </asp:TemplateField>
    

    Si mostrar es checked tiene que existir el correo puesto que es el campo a mostrar. Esta es la condicion que hago en el customvalidator

    ¿Cómo puedo poner la condición si no puedo validar un checkbox?

    Gracias de antemano

    lunes, 17 de agosto de 2015 20:56
  • Hola de nuevo:

    Por favor, me urge mucho.

    Muchas gracias por la ayuda

    martes, 18 de agosto de 2015 6:48
  • Tal vez hay mejores formas de hacerlo pero porque simplemente no pones una condicional en el evento del CheckBox_CheckedChanged o del boton_clic donde aceptes los cambios, que te compruebe lo que deseas?

    Saludos

    Jorge Garcia Suárez

    martes, 18 de agosto de 2015 13:22
  • Hola, Volar.2014.

    Intenta no especificar el CheckBox en la propiedad ControlToValidate, y busca el valor del CheckBox en tu evento "exite_correo_mostrar"

    Lo buscas por nombre, en el renglón actual,

    GridViewRow editedRow = nombreGridView.Rows[nombreGridView.EditIndex];
    CheckBox checkBoxMostrar = (CheckBox)editedRow.FindControl("chkmostrar");

    Espero que te ayude la respuesta.

    Saludos,

    @norrojas

    martes, 18 de agosto de 2015 14:20
  • Hola a todos:

    Lo arreglé usando ClientValidationFunction del customvalidator.

    Gracias

    • Marcado como respuesta volar.2014 martes, 18 de agosto de 2015 18:02
    martes, 18 de agosto de 2015 18:02