1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

ASP - Popular div com response.write

Discussão em 'Web Development' iniciada por Jammin @, 20 de Junho de 2009. (Respostas: 12; Visualizações: 1640)

  1. Jammin @

    Jammin @ Power Member

    Boas, tenho uma masterpage em asp e depois adicionei uma página, até aqui muito bem.

    Se escrever um texto qualquer no pagina.aspx fica no sitio, só que o texto é carregado no pagina.aspx.vb na base de dados no qual faço o seguinte:

    Ele escreve o paragráfo mas escreve antes das divs todas, ou seja fica em cima do banner.

    Como posso por isto a escrever no sitio certo? Talvez programar no aspx não? já tentei colar o código mas dá uma data de erros.

    Cumprimentos
     
  2. Jammin @

    Jammin @ Power Member

    Estive a pesquisar e não encontro nada sobre popular uma div com o response.write a alternativa será meter o <% codigo %> dentro da div mas ai todos os códigos mudam e eu nunca programei ai dentro, alguem tem um exemplo?
     
  3. Jammin @

    Jammin @ Power Member

    Já consegui meter o codigo no .aspx

    Na masterpage tenho <div id="news" runat="server">

    tenho script dentro do content place holder e mesmo assim escreve por cima da página.

    Alguem me pode ajudar sff, cumprimentos
     
  4. Boas o response.Write não funciona bem como estás a pensar. Na verdade em ASP.NET os controlos são todos preparados e apenas no evento Render é que é gerado o HTML. Ao usares o Response.Write vais estar a enviar conteudo antes do html ter sido escrito.

    O que tu deves fazer é criar um controlo que aceite um DataSource e que repita os dados linha a linha.
    No teu caso o que deves querer fazer é criar um repeater do gênero:

    <asp:repeater ID="Repeater1" runat="server"><ItemTemplate>
    <p class='geral'><asp:Literal ID="conteudos" runat="server" Text='<%# Eval("conteudo")' /></p>
    </ItemTemplate></asp:Repeater>

    Depois no evento PageLoad deves aplicar a tua Dataset ao Repeater através da propriedade DataSource. Finalizando com uma chamada ao método DataBind para aplicar o DataSource:

    Repeater1.DataSource = idtable
    Repeater1.DataMember = "nome_da_tabela_no_dataset"
    Repeater1.DataBind()

    Se fosse a ti procurava primeiro compreender como funciona o ASP.NET porque parece-me que ainda estás ligado ao método de programação de ASP tradicional e ou PHP.

    Cumps [[]]
     
  5. Jammin @

    Jammin @ Power Member

    Desculpa não percebi, isso dos Datasources não é wizard? eu não quero usar isso, só quero posicionar aquele código onde eu quero, porque ele funciona.

    Cumprimentos
     
  6. Não não é wizard. E não o teu código não funciona como estás a fazer.

    Se queres usar esses loops (que já nem faz sentido em ASP.NET) então tens que criar um Controlo na posição que queres repetir os conteúdos e escrever para lá. Só que nota. Muito probavelmente o que vais acabar por fazer é concatenar uma grande String o que é mais pesado em termos de processamento. Podes ainda usar a classe StringBuilder que sempre torna menos pesado a concatenação.

    De qualquer forma e se insistes na tua abordagem cria uma literal onde queres colocar o conteúdo

    <asp:Literal ID="litConteudo" runat="server" />

    e dentro do Loop:

    litConteudo.Text &= "<p class='geral'>" & id_rows("conteudo") & "</p>"
     
  7. Jammin @

    Jammin @ Power Member

    Obrigado pela ajuda a sério mas eu não estou a perceber nada do que me estás a dizer

    Cumprimentos
     
  8. Jammin @

    Jammin @ Power Member

    Alguem me pode explicar isto dos repeater's e isso eu estou a tentar mas não percebo nada :confused:
     
  9. E quanto à outra abordagem tb não percebeste?

    Básicamente transformas o código nisto:

    For Each id_rows As DataRow In idtable.Tables(0).Rows
    litConteudo.Text &= "<p class='geral'>" & id_rows("conteudo") & "</p>"
    Next

    e colocas isto:

    <asp:Literal ID="litConteudo" runat="server" />

    no sitio que queres que apareça o conteúdo.

    Se quiseres aprender sobre os repeaters e outros controlos podes começar por aqui:

    http://www.asp.net/LEARN/data-access/tutorial-29-vb.aspx
    http://www.asp.net/LEARN/data-access/
     
  10. Jammin @

    Jammin @ Power Member


    Assim já percebi, irei testar brevemente mas se dizes que funciona é porque funciona, cumprimentos e obrigado pela paciência (e pelos links) ;)
     
  11. .:vega:.

    .:vega:. Power Member

    Se o que tu queres é mostrar o conteúdo que tas a ir buscar a uma bd, também podes arrumar tudo numa Gridview...
     
  12. alfinete

    alfinete Power Member

    podes utilizar uma gridview ou um detailview , em que ambos utilizas o datatable ou dataset atraves de um datasource

    o select que tu tens do teu dataset (identificador)

    se tiveres uma gridview

    grvteste.datasource = identificador
    gevteste.databind ()
    escolhe na propriedades da grid campos automaticos

    para detailview

    detailteste.datasource = identificador
    detailteste.databind()

    tb tens de ir as propriedades do mesmo mecher com os pampos

    diferença entre gridview e datailview
    gridview (poe colunas na vertival)
    detailview (poe as colunas na horizontal)

    é so uma ideia


    espero que tenha ajudado
     

Partilhar esta Página