Ok: Tengo un UpdatePanel en una página aspx que contiene un marcador de posición único.Código de JavaScript dentro de UpdatePanel
Dentro de este marcador de posición Estoy agregando uno de una selección de controles de usuario dependiendo de ciertas condiciones externas (esta es una página de configuración).
En cada uno de estos controles de usuario hay una función javascript bindUcEvents() que vincula los diversos eventos de jQuery y javascript a botones y validadores dentro del control de usuario.
El problema que tengo es que el javascript de usercontrol no se reconoce. Normalmente, javascript dentro de un panel de actualización se ejecuta cuando el panel de actualización publica, sin embargo, nada de este código puede ser encontrado por la página (he intentado ejecutar la función manualmente a través de la consola de firebug, pero me dice que no puede encontrar la función).
¿Alguien tiene alguna sugerencia?
Cheers, Ed.
EDIT:
Cortado (pero funcional) ejemplo:
de marcado:
<script src="/js/jquery-1.3.2.min.js"></script>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="Script" runat="server" />
<asp:Button ID="Postback" runat="server" Text="Populate" OnClick="PopulatePlaceholder" />
<asp:UpdatePanel ID="UpdateMe" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Postback" EventName="Click" />
</Triggers>
<ContentTemplate>
<asp:Literal ID="Code" runat="server" />
<asp:PlaceHolder ID="PlaceMe" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
C#:
protected void PopulatePlaceholder(object sender, EventArgs e)
{
Button button = new Button();
button.ID = "Push";
button.Text = "push";
button.OnClientClick = "javascript:return false;";
Code.Text = "<script type=\"text/javascript\"> function bindEvents() { $('#" + button.ClientID + "').click(function() { alert('hello'); }); } bindEvents(); </script>";
PlaceMe.Controls.Add(button);
}
verá que el botón no poput el mensaje de alerta, aunque el código esté presente en la página.
Edit2:
Ok, sólo para que quede claro, el código de producción es significativamente más complejo que una sola función unido a un literal, y contiene un gran número de
<%= Control.ClientID %>
los bits de código que será muy difícil de desglosar en funciones no específicas, y sin sentido, ya que cada uno de ellos solo se usa en un solo lugar (estamos hablando de validación muy específica y el disparador de popout extraño + algo de lógica).
¿Puedes publicar parte del código fuente o generado? sin esto, es muy difícil de diagnosticar. – scunliffe
seguro, simplemente tiendo a evitar hacerlo ya que hay bastante, intentaré cortarlo un poco –
Has afirmado que tienes un montón de código, por lo que no está en el código subyacente. .. ¿Entonces donde esta? En el aspx? En un archivo js externo? ¿Cargado desde un archivo de base de datos/xml y leído por el código? – Stobor