none
erro no Ajax 'System.Web.UI.ScriptManager' não tem uma propriedade pública denominada 'UpdatePanel' RRS feed

  • Pergunta

  •                                

    Estou fazendo uma tabela que retorna valores e quero que o script ajax daria um uptade em um valor na tabela.

    <asp:Repeater id="filmRepeater" runat="server"
                        DataSource='<%# DataBinder.Eval(Container.DataItem, "Filmes") %>'>
                    <ItemTemplate>
                        <table>
                            <tr>
                                <td style="background: #ccc ">
                                      <%# DataBinder.Eval(Container.DataItem,"[\"Nome\"]")%>
                                </td>

                                <td style="background: #ccc ">
                                      <%# DataBinder.Eval(Container.DataItem,"[\"Atores\"]")%>
                                </td>

                                <td style="background: #ccc ">
                                      <%# DataBinder.Eval(Container.DataItem,"[\"ano\"]")%>
                                </td>

                                <td style="background: #ccc ">

                                                                                        

    <asp:ScriptManager ID="smAtualiza" runat="server">
                                        <asp:UpdatePanel ID="pnlAtualizar" runat="server">
                                            <ContentTemplate>

                                                <asp:TextBox ID="txtpreco" runat="server" Width="100"></asp:TextBox>

                                            </ContentTemplate>
                                        </asp:UpdatePanel>
                                     </asp:ScriptManager>


                                </td>
                            </tr>
                        </table>
                    </ItemTemplate>
                </asp:Repeater>

    esta dando erro no <asp:ScriptManagerProxy ID="smAtualiza" runat="server">

    como posso resolver isso?

                                                                                                                
    terça-feira, 16 de abril de 2013 19:12

Respostas

  • Eder,

    coloca seu scriptManager assim

             <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>

    E não assim

            <asp:ScriptManager ID="ScriptManager1" runat="server">
                <asp:UpdatePanel ID="UpdatePanel1" runat="server"></asp:UpdatePanel>
            </asp:ScriptManager>
    Não coloca nada dentro dele.

    Exatamente Eder. Conforme o Welington mencionou a declaração do ScriptManager está incorreta. Segue a dica dele.

    O ScriptManager não pode conter um controle do tipo UpdatePanel, portanto, ou você fecha conforme citado anteriormente ou conforme abaixo:

    <asp:ScriptManager ID="smAtualiza" runat="server" />

    Costumo declarar o ScriptManager como o primeiro controle da página e quando utilizo master page declaro na master.

    Abraços

    terça-feira, 16 de abril de 2013 19:36

Todas as Respostas

  • Eder,

    coloca seu scriptManager assim

             <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>

    E não assim

            <asp:ScriptManager ID="ScriptManager1" runat="server">
                <asp:UpdatePanel ID="UpdatePanel1" runat="server"></asp:UpdatePanel>
            </asp:ScriptManager>
    Não coloca nada dentro dele.
    terça-feira, 16 de abril de 2013 19:27
    Moderador
  • Eder,

    coloca seu scriptManager assim

             <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>

    E não assim

            <asp:ScriptManager ID="ScriptManager1" runat="server">
                <asp:UpdatePanel ID="UpdatePanel1" runat="server"></asp:UpdatePanel>
            </asp:ScriptManager>
    Não coloca nada dentro dele.

    Exatamente Eder. Conforme o Welington mencionou a declaração do ScriptManager está incorreta. Segue a dica dele.

    O ScriptManager não pode conter um controle do tipo UpdatePanel, portanto, ou você fecha conforme citado anteriormente ou conforme abaixo:

    <asp:ScriptManager ID="smAtualiza" runat="server" />

    Costumo declarar o ScriptManager como o primeiro controle da página e quando utilizo master page declaro na master.

    Abraços

    terça-feira, 16 de abril de 2013 19:36
  • Eder o Script Manager não pode ter outros controles dentro. E no seu caso o Update Panel está dentro dele:

    <asp:ScriptManager ID="smAtualiza" runat="server">
                                        <asp:UpdatePanel ID="pnlAtualizar" runat="server">
                                            <ContentTemplate>
    
                                                <asp:TextBox ID="txtpreco" runat="server" Width="100"></asp:TextBox>
    
                                            </ContentTemplate>
                                        </asp:UpdatePanel>
                                     </asp:ScriptManager>

    Teria que ficar assim:

    <asp:ScriptManager ID="smAtualiza" runat="server">                                  
    </asp:ScriptManager>
    
    <asp:UpdatePanel ID="pnlAtualizar" runat="server">
                                            <ContentTemplate>
    
                                                <asp:TextBox ID="txtpreco" runat="server" Width="100"></asp:TextBox>
    
                                            </ContentTemplate>
                                        </asp:UpdatePanel>


    É recomendado também que você coloque ele logo abaixo do form (O melhor que você faz é coloca-lo na Master Page, assim evita problemas.)

    <form>
      <asp:ScriptManager ID="smAtualiza" runat="server"></ScriptManager>


    Caso tenha ajudado clique em "Marcar como resposta" assim outros usuários que tenham a mesma dúvida acharão esse post, ok ?
    Abraços


    Evandro Aguiar
    http://agenciawebpro.com.br

    Farei o possível, para ajudar. Caso eu consiga, marque minha resposta como útil e me faça feliz. :) hauhauhauhauh

    • Sugerido como Resposta EvandroAS terça-feira, 16 de abril de 2013 19:58
    terça-feira, 16 de abril de 2013 19:51
  • Valeu Diego Couto!

    é estou começando a programar a asp.net e to apanhando um pouco mas to aprendendo bastante fiz o que lhe disse e deu certo!

    obrigado.

    terça-feira, 16 de abril de 2013 19:52
  • Valeu Diego Couto!

    é estou começando a programar a asp.net e to apanhando um pouco mas to aprendendo bastante fiz o que lhe disse e deu certo!

    obrigado.

    Qualquer dúvida pode postar, Eder. Estamos aqui pra isso. rs

    E também use a dica que dei sobre colocar sempre na Master Page e logo após o FORM, assim evita problemas, pois caso hajam dois <scriptManager na página dá problema, ou também se você colocar um UpdatePanel acima de um <scriptManager tbm dá problema. Por isso é sempre bom que ele esteja somente em um lugar (Master Page no caso) e sempre acima de todos outros controles (abaixo do FORM). 

    Abraço


    Evandro Aguiar
    http://agenciawebpro.com.br

    Farei o possível, para ajudar. Caso eu consiga, marque minha resposta como útil e me faça feliz. :) hauhauhauhauh

    terça-feira, 16 de abril de 2013 19:57
  • deu certo só que o evento que eu estou mandando não esta funcionando 

    pra eu achar o conteúdo dessa textbox eu tenho que fazer isso?

    ((TextBox)FindControl("txtpreco")).Text

    grato.


    terça-feira, 16 de abril de 2013 20:22
  • deu certo só que o evento que eu estou mandando não esta funcionando 

    pra eu achar o conteúdo dessa textbox eu tenho que fazer isso?

    ((TextBox)FindControl("txtpreco")).Text

    grato.


    Sim, Eder. Como está dentro de um repeater é preciso o findcontrol (dentro de uma repetição para achar todos os TextBox), ficaria assim:

    foreach (RepeaterItem item in filmRepeater.Items)
        {
            TextBox txtPreco = (TextBox)item.FindControl("txtpreco");
            if (txtpreco!= null)
            {
                string val = txtpreco.Text;
    
            }
        }

    Um outro exemplo aqui: http://www.scriptbrasil.com.br/forum/index.php?s=922b67d90b45196f570eea04b5edb88b&showtopic=126416&mode=linearplus

    Caso tenha ajudado clique em "Marcar como resposta" assim outros usuários que tenham a mesma dúvida acharão esse post, ok ?
    Abraços


    Evandro Aguiar
    http://agenciawebpro.com.br

    Farei o possível, para ajudar. Caso eu consiga, marque minha resposta como útil e me faça feliz. :) hauhauhauhauh



    • Sugerido como Resposta EvandroAS terça-feira, 16 de abril de 2013 20:34
    • Editado EvandroAS terça-feira, 16 de abril de 2013 20:35
    terça-feira, 16 de abril de 2013 20:34
  • acho que to fazendo algo errado mas acho que não estou visualizando o erro

    Esse é o textbox dentro do repeater:

    <asp:TextBox ID="txtPreco" runat="server" Width="100" ontextchanged="TextBox1_TextChanged" AutoPostBack="true"></asp:TextBox>

    E Esse é o evento:

     protected void TextBox1_TextChanged(object sender, EventArgs e)
            {
                string val="";
                foreach (RepeaterItem item in CategoriaRepeater.Items)
                {
                    Repeater filmRepeater = (Repeater)item.FindControl("filmRepeater");

                    foreach (RepeaterItem itemm in filmRepeater.Items)
                    {
                        TextBox txtPreco = (TextBox)itemm.FindControl("txtPreco");
                        if (txtPreco != null)
                        {
                            val = txtPreco.Text;

                        }
                    }
                }
                Label1.Text = val;
            }

     tipo se eu tiver repeaters em dois niveis teria que fazer o que esta em cima?

    grato

     
    terça-feira, 16 de abril de 2013 20:59
  • acho que to fazendo algo errado mas acho que não estou visualizando o erro

    Esse é o textbox dentro do repeater:

    <asp:TextBox ID="txtPreco" runat="server" Width="100" ontextchanged="TextBox1_TextChanged" AutoPostBack="true"></asp:TextBox>

    E Esse é o evento:

     protected void TextBox1_TextChanged(object sender, EventArgs e)
            {
                string val="";
                foreach (RepeaterItem item in CategoriaRepeater.Items)
                {
                    Repeater filmRepeater = (Repeater)item.FindControl("filmRepeater");

                    foreach (RepeaterItem itemm in filmRepeater.Items)
                    {
                        TextBox txtPreco = (TextBox)itemm.FindControl("txtPreco");
                        if (txtPreco != null)
                        {
                            val = txtPreco.Text;

                        }
                    }
                }
                Label1.Text = val;
            }

     tipo se eu tiver repeaters em dois niveis teria que fazer o que esta em cima?

    grato

     
    Cara, não cheguei a testar. Mas creio que seja isso sim.

    Evandro Aguiar
    http://agenciawebpro.com.br

    Farei o possível, para ajudar. Caso eu consiga, marque minha resposta como útil e me faça feliz. :) hauhauhauhauh

    terça-feira, 16 de abril de 2013 21:33