Ir para conteúdo
Fórum Script Brasil
  • 0

Instrucao If No Datalist


Oraculum

Pergunta

Estou tentando inserir uma instrução “if” dentro de um datalist, lembro-me que no asp era possível realizar tal operação quando fazíamos um loop pelo recordset como por exemplo: quando era necessário verificar o conteúdo do registro na tabela e a partir daí tomar certas decisões no sistema.

Em asp:

<%

Do Until rsAgendamentos.EOF

if rsAgendamentos("Atendido") = "1" then

‘ imprimimos um “x” na tela

Response.write(“x”)

End if

rsAgendamentos.MoveNext

Loop

%>

em aspx eu tentei fazer a intrucao if dentro de um datalist de forma semelhante há exibida em asp, mas não deu certo, consigo exibir todos os demais dados mais não consigo fazer uma instrução semelhante a esta exibida acima em asp.

<%# Container.DataItem("Atendido") %>

Alguém saberia me dizer como devo proceder para incluir uma instrucao if dentro de um datalist

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

Veja se isso resolve o caso:

<%# iif(Container.DataItem("Atendido")="1", "x", Container.DataItem("Atendido")) %>

A função Iif() recebe três argumentos, e retorna o segundo ou o terceiro dependendo do valor do primeiro (se o primeiro for verdadeiro ela retorna o segundo e se ele for falso ela retorna o terceiro).

Certo? wink.gif

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

graymalkin eu tentei este cod que ce me postou e funcionou perfeitamente quando a intrucao não tem que somar variaveis, por exemplo neste codigo que utilizei o asp como exemplo eu criei uma variavel pra totalizar o total de clientes atendidos e todas as vezes que ele testava o registro e verificava que no bd o cliente tinha sido atendido ele adcionava "um" a mais na variavel como por exemplo:

if rscliente=1 then

'marque um x

response.write("x")

'acrescente um a mais no total de clientes atendidos

TheTotalClientesAtendidos = TheTotalClientesAtendidos + 1

end if

não sei se esta soma seria feita antes dos dados irem para o datalist ou dentro do proprio datalist.

ps. onde é que você consegue descobrir estas funcoes???

valeu pela atencao dispensada graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

graymalkin eu tentei este cod que ce me postou e funcionou perfeitamente quando a intrucao não tem que somar variaveis, por exemplo neste codigo que utilizei o asp como exemplo eu criei uma variavel pra totalizar o total de clientes atendidos e todas as vezes que ele testava o registro e verificava que no bd o cliente tinha sido atendido ele adcionava "um" a mais na variavel

Sim, você pode fazer isso através do evento ItemDataBound que é chamado para cada item que é inserido na DataList:

    Private Sub DataList1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) Handles DataList1.ItemDataBound
        If e.Item.DataItem("campo") = "valor" Then
            x += 1
        End If
    End Sub

não sei se esta soma seria feita antes dos dados irem para o datalist ou dentro do proprio datalist.

Mas, de fato, seria mais prático e rápido calcular a quantidade antes ou depois de inserir na DataList (por SQL) do que durante.

ps. onde é que você consegue descobrir estas funcoes???

A função Iif() já é uma velha conhecida desde o VB6. smile.gif

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

ae Graymalkin tentei colocar este codigo na pagina acontece que apareceu uma mensagem de error vou coloca-la logo abaixo:

*********************************

Compiler Error Message: BC30506: Handles clause requires a WithEvents variable.

Source Error:

Line 40: DIM TipoPG as String

Line 41:

Line 42: Private Sub DataList1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) Handles DataList1.ItemDataBound

Line 43: If e.Item.DataItem("Tipo") = "PG" Then

Line 44: TheAtendidoPG += 1

********************************

então abri a documentacao do sdk e verifiquei que teria que colocar no datalist a opcao de *** OnItemDataBound="DataList1_ItemDataBound" *** só que mesmo com isto continua apresentando o error.

Po mano ve se tu me passa um bizu de como resolver este problema

valeu

abracos

Link para o comentário
Compartilhar em outros sites

  • 0

Simplesmente dê um duplo-clique sobre a DataList no WebForm e escolha o evento ItemDataBound (do canto superior-direito). A declaração da rotina do evento já aparece *pronta* para você. O que você precisa é só colocar o conteúdo da mesma.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

graymalkin eu to usando o dreamweaver pra fazer as paginas e não consegui achar nenhuma opcao de databound nele mesmo apos clickar emcima do data lista, não teria como colocar direto no codigo do data list...

e aquele error era realmente por causa de não informar nada no datalist sobre o itemdatabound ?

valeu pela atencao

Link para o comentário
Compartilhar em outros sites

  • 0
graymalkin eu to usando o dreamweaver pra fazer as paginas e não consegui achar nenhuma opcao de databound nele mesmo apos clickar emcima do data lista, não teria como colocar direto no codigo do data list...

Ah, eu estou utilizando o Visual Studio .NET. Não sei como isso seria feito no Dreamweaver. No VS.NET podemos alterar tanto o código na página HTML quanto o código em VB.NET que será utilizado por detrás (code-behind). Eu prefiro este último, e foi por ele que fiz o que você quer.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

graymalkin eu resolvi fazer o relatorio no proprio dreamweaver, depois de dar uma pesquisada na documentacao do framework eu consegui desenvolver este exemplo:

PARTE DO CODIGO

************************

Sub Item_Bound(sender As Object, e As DataListItemEventArgs)

' É NECESSARIO AQUI IMPORTAR OS WEBFORM EXISTENTES DENTRO DO DATALIST VEJA COMO SE FAZ PARA IMPORTAR UM LABEL.

Dim lb_AtendidoPG As Label = CType(e.Item.FindControl("lb_AtendidoPG"), Label)

Dim lb_AtendidoGE As Label = CType(e.Item.FindControl("lb_AtendidoGE"), Label)

Dim lb_NaoAtendidoSG As Label = CType(e.Item.FindControl("lb_NaoAtendidoSG"), Label)

Dim lb_NaoAtendidoGE As Label = CType(e.Item.FindControl("lb_NaoAtendidoGE"), Label)

'TAMBEM É NECESSARIO IMPORTAR OS DADOS ATRIBUIDOS NO DATALIST OU SEJA OS AQUELES QUE ESCREVEMOS COMO container.item("Campo")

DIM TheTipo as String = DataBinder.Eval(e.Item.DataItem, "Tipo")

DIM TheAtendidos as String = DataBinder.Eval(e.Item.DataItem, "Atendido")

If TheTipo = "PG" Then

If TheAtendidos = "-1" Then

TheAtendido += 1

lb_AtendidoPG.text = "x"

else

TheNaoAtendido += 1

lb_NaoAtendidoSG.text = "x"

end if

End If

End Sub

'PARTE HTML

*************************

'PRIMEIRO FAZEMOS REFERENCIA AO ITEM DATA BOUND UTILIZANDO A TAG OnItemDataBound="Nome_do_Bound" QUE DEVE SER INSERIDA NO INICIO DA DECLARACAO DO DATALIST

<asp:DataList CssClass="textorelatorio" id="DataList1" runat="server" OnItemDataBound="Item_Bound">

<ItemTemplate>

<%# Container.DataItem("NomeCliente") %>

<asp:Label runat="server" ID="lb_AtendidoPG" />

<asp:Label runat="server" ID="lb_NaoAtendidoSG" />

<% Response.write(TheAtendido) %>

<% Response.write(TheNaoAtendido)%>

</ItemTemplate>

</asp:DataList>

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...