none
Regular Expression no gridview RRS feed

  • Pergunta

  •  

    Boa tarde pessoal,

     

    Estou com um grande problema, tenho um gridview onde faço o select, as alterações, o delet, e na parte de alteração eu preciso efetuar a validação do email (parametro de entrada), para isso estou utilizando o regular expression, e ele até chega a funcionar, não permite que o usuário altere os dados, porém ele não mostra a mensagem de erro.

     

    Alguém tem alguma idéia para me ajudar?

     

    Já tentei alterar o causevalidator do textbox para true... porém nem assim.

     

    Estarei no Aguardo.

     

    Grato.

    Frank

    sexta-feira, 25 de julho de 2008 20:07

Respostas

  • Tenta isso ai!!

    Esta no seguinte http://www.devmedia.com.br/articles/viewcomp.asp?comp=5442

    Estou colando abaixo, caso o artigo tenha sido removido.

     

    VALIDANDO DADOS EM UM GRIDVIEW

    Saudações a todos os usuários do Portal DevMedia.

    Neste artigo vou mostrar uma forma simples e muito útil de validar dados, quando na edição de um Gridview.

    Para iniciarmos nosso trabalho, abra o VS 2005 e crie um novo Website, não se preocupe com a linguagem de programação usada, tal tarefa não exigira codificação alguma.

    Em seguida insira em sua página um controle Gridview e um SqlDataSource (Estou usando o SQL Server 2005) e configure o SqlDataSource para exibir alguns campos no Gridview. Não esqueça de clicar no botão Advanced e marque a opção Generate INSERT, UPDATE and DELETE statements para que seja criado as intruções SQL referente a cada comando figura 1.

     

    Após estes passos, vincule o Gridview com o SqlDataSource e faça as configurações de cores e tamanho a seu gosto e usando a smartag do Gridview habilite a opção Enable Editing, veja na figura 2 como formatei meu Gridview.

     

    Como você pode notar não precisamos de nenhum código pra chegar até este ponto deste artigo. Agora vamos à parte que interessa! A validação dos campos quando em modo de edição.

    Bem, imaginamos que ao editar algum registro deste Gridview um usuário deixe em branco o campo Nome por exemplo, obviamente devemos informá-lo que o mesmo não pode ser nulo. Uma forma muito fácil de fazer isso é convertendo esse campo em um Template Field, desta forma poderemos validar este campo usando os controles de validação do VS 2005.

    Clique na Smartag do Gridview, em seguida clique em Edit Columns...

    Selecione o campo Nome e clique no link Convert this Field into a TemplateField, figura 3.

     

     

    Clique em OK para voltar ao VS 2005.

    Clique com o botão direito do mouse sobre o Gridview e selecione Edit Template à Column[2] – Nome (no meu exemplo) figura 4.

     

    No modo de edição do TemplateField, adicione ao EditItem Template um controle RequiredFieldValidator e um ValidationSummary como mostra a figura 5.

     

    Configure o RequiredFieldValidator como as seguintes propriedades:

    Estas propriedades não vou explicar detalhadamente porque acredito que você já as conheça.

     

    Em seguida no ValidationSummary ajuste as propriedades com segue na figura 7.

     

    Estas propriedades configuram para que seja exibido um alert com a mensagem de erro.

     

    Para finalizar clique com o botão direito do mouse sobre o formulário de configuração do TemplanteField e clique em End Template Editing figura 8.

     

    Agora execute sua aplicação e tente atualizar um registro deixando o campo em branco, veja meu exemplo:

     

    Note que ao clicar no botão OK o Textbox1 recebe o foco!

    sexta-feira, 15 de agosto de 2008 13:43

Todas as Respostas

  • Tente colocar um ValidationSummary e verifique se o DisplayMode do RegularExpressionValidator está como dynamic.






    Se a resposta foi útil, favor marcar como tal.
    Obrigado.
    terça-feira, 29 de julho de 2008 13:52
  •  

    Olá Eduardo, muito obrigado! Ele agora não deixa mudar para um email inválido ... porém não é mostrada nenhuma mensagem mesmo assim ...

    Se souber como fazer ....

     

    Muito obrigado

    terça-feira, 29 de julho de 2008 17:55
  • Verifique se o ErrorMessage e o Text do controle RegularExpressionValidator está configurado.
    terça-feira, 29 de julho de 2008 18:20
  • Olá Eduardo ... não funcionou mesmo assim. ..

     

    não tenho idéia do que seja ... já tentei de tudo ... tô achando que não tem como ...

     

    Valeu.

     

     

    terça-feira, 29 de julho de 2008 18:36
  • Coloque o validationsummary como messagebox e veja se vai aparecer.
    terça-feira, 29 de julho de 2008 19:33
  • Já tentei também Eduardo .... não apareceu!

     

     

     

    terça-feira, 29 de julho de 2008 19:39
  • Cola o código do teu .aspx
    terça-feira, 29 de julho de 2008 19:52
  • lá vai ... este é o panel com o grid:

     

    <asp:Panel ID="Panel2" runat="server">

    <asp:GridView ID="gvCadEmail" runat="server" AutoGenerateColumns="False" Width="400px"

    AllowPaging="True" DataSourceID="odsEmail" DataKeyNames="CodEmail,CodDepartamento" TabIndex="1"

    PageSize="20">

    <HeaderStyle CssClass="grid_cabecalho" />

    <AlternatingRowStyle BorderStyle="None" CssClass="grid_linha2" />

    <Columns>

    <asp:TemplateField HeaderText="Email" SortExpression="Email">

    <EditItemTemplate>

    <asp:TextBox ID="txtEmail" runat="server" TabIndex="1" Text='<%# Bind("Email") %>'

    ValidationGroup="6" CausesValidation="True"></asp:TextBox>&nbsp;

    <asp:RegularExpressionValidator ID="RegularExpressionValidator2" runat="server" ControlToValidate="txtEmail"

    ErrorMessage="E-mail Inválido!" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"

    ValidationGroup="6" Display="Dynamic" SetFocusOnError="True" TabIndex="1">E-mail Inválido!</asp:RegularExpressionValidator>

    <asp:ValidationSummary ID="ValidationSummary4" runat="server" TabIndex="1" ValidationGroup="6" />

    </EditItemTemplate>

    <ItemTemplate>

    <asp:Label ID="Label1" runat="server" Text='<%# Bind("Email") %>'></asp:Label>&nbsp;

    </ItemTemplate>

    </asp:TemplateField>

    <asp:BoundField DataField="IndAtivoEmail" HeaderText="IndAtivoEmail" SortExpression="IndAtivoEmail"

    Visible="False" />

    <asp:BoundField DataField="CodEmail" HeaderText="CodEmail" SortExpression="CodEmail"

    Visible="False" />

    <asp:TemplateField HeaderText="Status">

    <EditItemTemplate>

    &nbsp;<asp:DropDownList ID="ddlStatusEmail" runat="server" ValidationGroup="3" TabIndex="1"

    SelectedValue='<%# Bind("IndAtivoEmail") %>'>

    <asp:ListItem Value="1">Ativo</asp:ListItem>

    <asp:ListItem Value="2">Inativo</asp:ListItem>

    </asp:DropDownList>

    </EditItemTemplate>

    <ItemTemplate>

    <asp:DropDownList ID="ddlStatusEmail" runat="server" ValidationGroup="3" TabIndex="1"

    Enabled="False" SelectedValue='<%# Bind("IndAtivoEmail") %>'>

    <asp:ListItem Value="1">Ativo</asp:ListItem>

    <asp:ListItem Value="2">Inativo</asp:ListItem>

    </asp:DropDownList>

    </ItemTemplate>

    </asp:TemplateField>

    <asp:CommandField CancelText="Cancelar" DeleteText="Deletar" EditText="Alterar" InsertText="Inserir"

    NewText="Novo" ShowEditButton="True" ShowHeader="True" UpdateText="Atualizar"

    ValidationGroup="6" />

    <asp:BoundField DataField="CodDepartamento" HeaderText="CodDepartamento" SortExpression="CodDepartamento"

    Visible="False" />

    </Columns>

    <PagerStyle HorizontalAlign="Center" />

    </asp:GridView>

    <asp:ObjectDataSource ID="odsEmail" runat="server" SelectMethod="retornaEmail" TypeName="Business.clsTabDominio"

    DataObjectTypeName="DataContract.TabDominio" DeleteMethod="excluirEmail" InsertMethod="inserirEmail"

    OldValuesParameterFormatString="original_{0}" UpdateMethod="inserirEmail">

    <SelectParameters>

    <asp:SessionParameter Name="dados" SessionField="tabDominio" Type="Object" />

    </SelectParameters>

    <UpdateParameters>

    <asp:ControlParameter ControlID="gvCadEmail" Name="CodEmail" PropertyName="SelectedValue" />

    <asp:ControlParameter ControlID="ddlDepartamento" Name="CodDepartamento" PropertyName="SelectedValue" />

    <asp:ControlParameter ControlID="ddlStatusEmail" Name="IndAtivoEmail" PropertyName="SelectedValue" />

    </UpdateParameters>

    <InsertParameters>

    <asp:ControlParameter ControlID="gvCadEmail" Name="CodEmail" PropertyName="SelectedValue" />

    <asp:ControlParameter ControlID="ddlDepartamento" Name="CodDepartamento" PropertyName="SelectedValue" />

    <asp:ControlParameter ControlID="ddlStatusEmail" Name="IndAtivoEmail" PropertyName="SelectedValue" />

    </InsertParameters>

    </asp:ObjectDataSource>

    &nbsp;

    </asp:Panel>

    terça-feira, 29 de julho de 2008 20:11
  • O botão que você clica tem que estar no validationgroup 6.. e pode colocar o validationsummary fora do template
    terça-feira, 29 de julho de 2008 20:17
  • Não funcionou de novo ...

     

    Sinceramente, não sei mais o que fazer ...

     

    terça-feira, 29 de julho de 2008 20:37
  • A principio está tudo correto, se não está funcionando é pq algum fator externo ao validator está atrapalhando, você pode fazer um teste no page_load da pagina fazer um if por Page.IsValid e ver se entra la.
    terça-feira, 29 de julho de 2008 20:42
  • Tenta isso ai!!

    Esta no seguinte http://www.devmedia.com.br/articles/viewcomp.asp?comp=5442

    Estou colando abaixo, caso o artigo tenha sido removido.

     

    VALIDANDO DADOS EM UM GRIDVIEW

    Saudações a todos os usuários do Portal DevMedia.

    Neste artigo vou mostrar uma forma simples e muito útil de validar dados, quando na edição de um Gridview.

    Para iniciarmos nosso trabalho, abra o VS 2005 e crie um novo Website, não se preocupe com a linguagem de programação usada, tal tarefa não exigira codificação alguma.

    Em seguida insira em sua página um controle Gridview e um SqlDataSource (Estou usando o SQL Server 2005) e configure o SqlDataSource para exibir alguns campos no Gridview. Não esqueça de clicar no botão Advanced e marque a opção Generate INSERT, UPDATE and DELETE statements para que seja criado as intruções SQL referente a cada comando figura 1.

     

    Após estes passos, vincule o Gridview com o SqlDataSource e faça as configurações de cores e tamanho a seu gosto e usando a smartag do Gridview habilite a opção Enable Editing, veja na figura 2 como formatei meu Gridview.

     

    Como você pode notar não precisamos de nenhum código pra chegar até este ponto deste artigo. Agora vamos à parte que interessa! A validação dos campos quando em modo de edição.

    Bem, imaginamos que ao editar algum registro deste Gridview um usuário deixe em branco o campo Nome por exemplo, obviamente devemos informá-lo que o mesmo não pode ser nulo. Uma forma muito fácil de fazer isso é convertendo esse campo em um Template Field, desta forma poderemos validar este campo usando os controles de validação do VS 2005.

    Clique na Smartag do Gridview, em seguida clique em Edit Columns...

    Selecione o campo Nome e clique no link Convert this Field into a TemplateField, figura 3.

     

     

    Clique em OK para voltar ao VS 2005.

    Clique com o botão direito do mouse sobre o Gridview e selecione Edit Template à Column[2] – Nome (no meu exemplo) figura 4.

     

    No modo de edição do TemplateField, adicione ao EditItem Template um controle RequiredFieldValidator e um ValidationSummary como mostra a figura 5.

     

    Configure o RequiredFieldValidator como as seguintes propriedades:

    Estas propriedades não vou explicar detalhadamente porque acredito que você já as conheça.

     

    Em seguida no ValidationSummary ajuste as propriedades com segue na figura 7.

     

    Estas propriedades configuram para que seja exibido um alert com a mensagem de erro.

     

    Para finalizar clique com o botão direito do mouse sobre o formulário de configuração do TemplanteField e clique em End Template Editing figura 8.

     

    Agora execute sua aplicação e tente atualizar um registro deixando o campo em branco, veja meu exemplo:

     

    Note que ao clicar no botão OK o Textbox1 recebe o foco!

    sexta-feira, 15 de agosto de 2008 13:43
  • Olá Edson, funcionou perfeitamente!

     

    Muito obrigado mesmo pela ajuda!

     

    Grande abraço.

     

    sexta-feira, 15 de agosto de 2008 13:57