Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

caezar

[Resolvido] Bloqueando textBox dentro de grid

Recommended Posts

Lá vai mais uma amigos...

 

Tengo em um gridView conectado a um datasource.

Neste gride tenho varios campos. Um deles é um campo data e outro é um template com textbox.

 

Gostaria de saber como desabilitar este textbox de acordo com a data, exemplo: se a data for menor que hoje() o textbox da linha é bloqueado.

 

Um abs e bom feriado a todos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Lá vai mais uma amigos...

 

Tengo em um gridView conectado a um datasource.

Neste gride tenho varios campos. Um deles é um campo data e outro é um template com textbox.

 

Gostaria de saber como desabilitar este textbox de acordo com a data, exemplo: se a data for menor que hoje() o textbox da linha é bloqueado.

 

Um abs e bom feriado a todos!

 

 

Feriado?!?!?! Onde D= ?

Hahahaha

 

 

Bem cara, por ser um template você pode colocar um evento JS ele...

Sabe como fazer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Feriado?!?!?! Onde D= ?

Hahahaha

 

 

Bem cara, por ser um template você pode colocar um evento JS ele...

Sabe como fazer?

 

Pô as vezes precisamos de feriados!!! rsssss

 

Cara não tenho a minima... To começando em asp.net

Se você puder me mandar um exemplo!

 

Absss

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cesar no textbox é so colocar assim

<asp:TextBox runat="server" Visible='<%# Equals(DateTime.Parse(Eval("SuaData").ToString() >= DateTime.Today) %>' />

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cesar no textbox é so colocar assim

<asp:TextBox runat="server" Visible='<%# Equals(DateTime.Parse(Eval("SuaData").ToString() >= DateTime.Today) %>' />

Então amigos os textBox estão dentro duma coluna de template do gridVIew... Eu procuro o código refereneta a ele no html e adiciono esta condiçãoe?

E como eu quero apenas bloquear o textBox eu ponho ao invez de visible, enabled?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo,

 

Esta acontecendo este erro:

 

Detalhes da Exceção: System.FormatException: A seqüência não foi reconhecida como um DateTime válido. Há uma palavra desconhecida iniciando o índice 0.

 

Erro de Origem:

 

 

Linha 161: </EditItemTemplate>

Linha 162: <ItemTemplate>

Linha 163: <asp:TextBox ID="TextBox4" runat="server" Height="21px"

Linha 164: Text='<%# Bind("GolsV") %>' Width="21px"

Linha 165: Enabled='<%# Equals(DateTime.Parse(Eval("Data_Hora").ToString() >= DateTime.Today)) %>'></asp:TextBox>

 

 

O que seria?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo erro sua coluna Eval("Data_Hora") deve está vazio ou não é uma data!

 

Resolvi desta forma, amigos!

 

Enabled='<%# Equals(Eval("Data_Hora").ToString() >= DateTime.Today) %> '>

 

Mas ele bloqueia os campos de todas as linhas do grid!

 

Como fazer isso apenas com a linha em que a data for menos ou igual?

 

abs

 

Obrigado pela ajuda, mais um vez! rssss

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala cesar, cara dessa forma ai creio que não da certo pq você ta comparando uma String com uma Data. Sacou!

Na verdade eu me equivoquei, pois com o Método Equals ele só compara dois objetos e não compara diferenças.

 

 

Tenta assim não da certo:

Enabled='<%# DateTime.Parse(Eval("Data_Hora").ToString() >= DateTime.Today ? true: false %> '>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala cesar, cara dessa forma ai creio que não da certo pq você ta comparando uma String com uma Data. Sacou!

Na verdade eu me equivoquei, pois com o Método Equals ele só compara dois objetos e não compara diferenças.

 

 

Tenta assim não da certo:

Enabled='<%# DateTime.Parse(Eval("Data_Hora").ToString() >= DateTime.Today ? true: false %> '>

 

Acontece este erro:

 

Descrição: Erro ao compilar um recurso necessário para atender esta solicitação. Examine os detalhes específicos do erro e modifique o código fonte apropriadamente.

 

Mensagem de Erro do Compilador: BC30037: Caractere inválido.

 

Erro de Origem:

 

 

 

Linha 150: </EditItemTemplate>

Linha 151: <ItemTemplate>

Linha 152: <asp:TextBox ID="TextBox3" runat="server" Height="21px"

Linha 153: Text='<%# Bind("GolsM") %>' Width="21px"

Linha 154: Enabled='<%# DateTime.Parse(Eval("Data_Hora").ToString()) >= DateTime.Today ? true: false %> '></asp:TextBox>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola Master,

 

Vou tentar te ajudar. Vejamos se entendi;

 

1) Você tem uma DataGrid que exbibe os dados de uma tabela usando um DataTable qualquer.

2) Nesta tabela existem dois campos em questão: Um campo onde o usuário entra com uma data e outro campo texto que o usuário só pode preencher se a data informada for maior ou igual a data de hoje.

3) Você tem templates que controlam estes dois campos.

 

Partindo desta premissa, ao invés de fazer o codigo direto no aspx, faça no codebihind usando o evento RowDataBound do DataGrid.

 

protected void MeuDataGrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
   (e.Row.FindControl("SeuTextBox") as TextBox).Enabled = DateTime.Parse((e.Row.FindControl("SuaData") as TextBox).Text) >= DateTime.Today;
}

 

Assim o controle será individual.

 

Espero te-lo ajudado, ;)

 

Angelo Compri

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola Master,

 

Vou tentar te ajudar. Vejamos se entendi;

 

1) Você tem uma DataGrid que exbibe os dados de uma tabela usando um DataTable qualquer.

2) Nesta tabela existem dois campos em questão: Um campo onde o usuário entra com uma data e outro campo texto que o usuário só pode preencher se a data informada for maior ou igual a data de hoje.

3) Você tem templates que controlam estes dois campos.

 

Partindo desta premissa, ao invés de fazer o codigo direto no aspx, faça no codebihind usando o evento RowDataBound do DataGrid.

 

protected void MeuDataGrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
   (e.Row.FindControl("SeuTextBox") as TextBox).Enabled = DateTime.Parse((e.Row.FindControl("SuaData") as TextBox).Text) >= DateTime.Today;
}

 

Assim o controle será individual.

 

Espero te-lo ajudado, ;)

 

Angelo Compri

 

Na realidade eu tenho um GridView e nele fora os campos da tabela do DataSet eu criei dois campos template onde em cada inclui um textbox que retoma os valores dos campos GolsM e GolsV tambem do dataset pelo metodo Bind.

Exemplo: Text='<%# Bind("GolsM") %>'

 

Sera que o seu metodo vai dar certo no meu gridView??

 

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rss..

 

GridView e DataGrid é a mesma coisa.. apenas mudou de nome entre a versão 2.0 e 3.0 da framework...

Respondendo à sua questão: "Sim... vai funcionar!"

 

Abs, ;)

 

Angelo Compri

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cezar tanto o que o Angelo propos quanto o que propus é válido, a diferença é que o que eu porpus gasta menos recurso de sua aplicação, ja que a solução do angelo realiza um find control a cada row, pra depois validar, ja o que propus apenas valida!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cezar tanto o que o Angelo propos quanto o que propus é válido, a diferença é que o que eu porpus gasta menos recurso de sua aplicação, ja que a solução do angelo realiza um find control a cada row, pra depois validar, ja o que propus apenas valida!

 

Percebi Ivan,

 

Mas não consigo resolver o erro!

Eu uso Asp.net com vb, sera que não é isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cezar com certeza essa sintax so funciona no C#!

Deixa eu ver como faz no VB!

 

Vou aguardar, desculpe por não ter avisado antes!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.