• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

kat_jo

Response.Write("<asp:LinkButton ID=LB2 runat=server>link1</asp:LinkButton>")

11 mensagens neste tópico

Boas Malta!!!

Preciso mesmo aqui de uma help.

Tenho uma pagina (menprinc.aspx) onde queria criar estas tags dinamicamente, ou seja atraves de uma chamada a uma funçao ele criar-me automaticamente esse codigo.

Eu faço isto na minha funçao      Response.Write("<asp:LinkButton ID="LB2" runat="server">link1</asp:LinkButton>") e apenas aparece-me "link1", ou seja ele nao "lê" a tag de asp...

Mas se por exemplo eu fizer    Response.Write("<input type=button value=estaporranaofunciona>")    ja me aparece normalmente o botao.

Isto tudo porque eu quero criar varios linkbuttons em conformidade com uma base de dados, resumindo tenho 4 nomes na base de dados logo quero criar 4 linkbuttons.

Alguem sff me explique ou entao que me de uma possivel resoluçao para o meu problema .

De qualquer forma o meu muito obrigado.... :P:D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

já tentas assim:

Response.Write("<asp:LinkButton ID='LB2' runat='server'>link1</asp:LinkButton>") ??

isso talvez seja um conflito entre os " ..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso não resulta porque estás a mandar essa string directamente para o cliente que é um browser. Os browser só sabem HTML jscript e outras coisas do genero. Nada de código server side.

Esse código tem de ser processado antes de ir para o cliente.

Pode por exemplo se tiveres um form na tua página, fazer:

Page.Form.Controls.Add(new System.Web.UI.WebControls.Button());

Que vai ser processado e transformado em HTML.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se quisere adiciona o evento click a esse botão:

System.Web.UI.WebControls.Button but = new System.Web.UI.WebControls.Button();
but.Text = "OK";
but.Click += new EventHandler(but_Click);
        
Page.Form.Controls.Add(but);

Criar uma função para o evento:

void but_Click(object sender, EventArgs e)
{
    System.Web.UI.WebControls.Button but = (System.Web.UI.WebControls.Button)sender;
    but.Text = "Cancel";
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

desde ja obrigado.

eu tentei o vosso codigo mas deu-me desta vez este erro:

Collection was modified; enumeration operation may not execute.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.InvalidOperationException: Collection was modified; enumeration operation may not execute.

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. 

Stack Trace:

[invalidOperationException: Collection was modified; enumeration operation may not execute.]

  System.Web.UI.ControlCollectionEnumerator.MoveNext() +127

  System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +208

  System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +21

  System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter writer) +61

  System.Web.UI.HtmlControls.HtmlForm.Render(HtmlTextWriter output) +258

  System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +53

  System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +280

  System.Web.UI.HtmlControls.HtmlForm.RenderControl(HtmlTextWriter writer) +45

  System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +199

  System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +21

  System.Web.UI.Control.Render(HtmlTextWriter writer) +7

  System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +53

  System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +280

  System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +24

  System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +199

  System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +21

  System.Web.UI.Page.Render(HtmlTextWriter writer) +27

  System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +53

  System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +280

  System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +24

  System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +7425

que posso fazer?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pode acontecer em uma das hipoteses mais comuns, que é mudar a colecção de controles enquanto a estas a usar em uma interação do tipo foreach!

É esse o caso? Qual é o código nas redondezas onde está a ser inserida a linha

but.Click += new EventHandler(but_Click);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Este é o codigo  da pagina mp.aspx


<asp:LinkButton ID="LinkButton2" runat="server" BackColor="#BBE200" CssClass="menufilho"
                    Font-Bold="True" Font-Size="8pt" Font-Underline="False" ForeColor="Gray">Menu Filho 2</asp:LinkButton><br />
                     
                
                <% doMenus(); %>
               
                    
                 
                          
            </td>

e este é o codigo da parte mp.aspx.cs

protected void doMenus()
    {


        System.Web.UI.WebControls.Button but = new System.Web.UI.WebControls.Button();

        but.Text = "OK";
        Page.Form.Controls.Add(but);
        

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

huumm... o que me parece é que o programa está a fazer o render (usando internamente uma interacção), enquanto o teu código está a mudar a colecção. Acontece porque estás a correr o código inline. Existem alguns processos assincronos de render que correm ao mesmo tempo que o teu código.

É mesmo necessário esse inline code ai no teu aspx? Não podes usar antes a função

protected void Page_Load(object sender, EventArgs e)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tambem coloquei no Page_load e n funcou, da o mesmo erro.

Acho que deveria tambem dizer, nao sei se é importante que estou a usar masterpages, sendo que esta pagina que estamos a ver e a tentar resolver esta dentro do ContentHolder.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Nas master pages também tem de funcionar!!

Deve ser outra coisa que não estou a ver! Começa por tentar fazer uma página só com o código que te dei, e testa! Vai avançando gradualmente. Deve existir algum pormenor no teu código que está a estragar!!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado pela help, ja consegui resolver o problem, mas sinceramente nao sei o porquê... de repente começou-me a funcar ... enfim obrigado pela ajuda :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora