2014-07-18 2 views
0

Je suis très nouveau à ASP & C#. J'ai un LinkButton qui exécute une fonction C# pour recueillir des données à partir d'une base de données et ces valeurs sont ensuite ajoutées à un Div que j'utilise la boîte de dialogue jQuery UI pour afficher. La fonctionnalité est que les utilisateurs ajoutent des valeurs de la boîte de dialogue jquery au formulaire, cette fonction s'exécutera plusieurs fois car la plupart du temps, les utilisateurs ajouteront plus d'une valeur. Actuellement, après leur exécution une fois et ajouter une valeur au formulaire, en cliquant à nouveau sur le LinkButton n'a absolument aucune action. Le projet que je réalise J'ai d'abord créé avec "ASP.NET Web Forms Application" depuis que c'était mon premier projet web, il y a quelques jours j'en ai créé un nouveau mais en tant qu'application de formulaires web vides depuis que je recevais le coup de lui et voulait construire l'application à partir de la base. J'ai déplacé tout mon code vers ce nouveau projet, ajouté toutes les références et tous les paquets NuGet que j'ai installés. C'est quand le problème a commencé à se produire. Je suppose que c'est quelque chose de petit et de stupide que j'ai oublié, mais ça fait 3 jours et j'ai besoin d'aide.ASP - Jquery Dialog UI fonction perd sa fonctionnalité après la première publication

Quelques détails:

  • IIS 7.5
  • Happens sur tous les navigateurs
  • Aucune action ne se fait avec le LinkButton après la première exécution réussie par
  • Il fonctionne parfaitement une fois.
  • Utiliser pipeline classique dans IIS
  • En utilisant jQuery 1.11.1 bibliothèques

Certains code-

Bouton Lien:

<asp:LinkButton ID="addId" runat="server" OnClick="showPopup_Click">Add Id</asp:LinkButton>

code Javascript qui est appelé après la fonction du code derrière: (je l'ai modifié après avoir lu une autre solution possible, mais toujours pas aller)

function eventRegistration() 
{ 
    $('#addStigId').click(ShowPopup); 
} 
function ShowPopup(message) { 
    //$(document).ready(function() { 
     $('#addStigId').click(function() { 
      $('#newDialog').dialog('open'); 
      return false; 
     }); 
     $('#newDialog').dialog({ 
      dialogClass: 'stigIdDialogCSS', 
      resizable: false, 
      height: 200, 
      title: "Add Stig ID", 
      modal: true 
     }); 
     $("#newDialog").show(); 
} 
$(document).ready(eventRegistration()); 

ShowPopup est appelé à partir du code se derrière.

+0

'$ (document) .ready (eventRegistration());' <- qui exécute la fonction 'eventRegistration' et en assignant le résultat à' document.ready 'gestionnaire.Supprimez la parenthèse vide -> '$ (document) .ready (eventRegistration);' – Archer

+0

Merci Archer. Le problème persiste mais tu m'as appris quelque chose de nouveau. Est-ce que je ne devrais pas appeler ShowPopup à partir du code? L'eventRegistration est la nouvelle partie que j'ai ajoutée à partir de la solution de quelqu'un d'autre. – desertjedi

+0

Je pense que je sais ce que vous faites, donc je vais le mettre dans une réponse avec quelques modifications au code ... – Archer

Répondre

0

Il semble que certaines utilisations de la fonction soient mélangées, comme l'affectation de gestionnaires d'événements à des documents prêts et à des clics d'éléments. Je pense c'est ce que vous voulez vraiment dire ...

function eventRegistration() 
{ 
    $('#addStigId').click(function() { 
     showPopup(); 
     return false; 
    }); 
} 

function ShowPopup() { 
    $('#newDialog').dialog({ 
     dialogClass: 'stigIdDialogCSS', 
     resizable: false, 
     height: 200, 
     title: "Add Stig ID", 
     modal: true 
    }); 
    $("#newDialog").show(); 
} 

$(document).ready(eventRegistration); 

Lorsque votre document est chargé, il exécutera la fonction d'enregistrement d'événements qui attribuera le gestionnaire d'événements de clic pour #addStigId. Cela devrait fonctionner maintenant. Vous auriez pu placer alternativement l'enregistrement de l'événement dans une fonction anonyme (comme vous le faites pour l'événement de clic #addStigId) et le transmettre dans le gestionnaire de document prêt. Vous n'êtes pas obligé de le faire, mais je vais vous donner un exemple car il est plus souvent vu si vous savez au moins ce qu'il est ...

function ShowPopup() { 
    $('#newDialog').dialog({ 
     dialogClass: 'stigIdDialogCSS', 
     resizable: false, 
     height: 200, 
     title: "Add Stig ID", 
     modal: true 
    }); 
    $("#newDialog").show(); 
} 

$(document).ready(function() { 
    $('#addStigId').click(function() { 
     showPopup(); 
     return false; 
    }); 
}); 

Je pense que cela vous aidera, mais si pas alors crier comme je peux avoir juste mal compris quelque chose :)

+0

Merci beaucoup pour votre travail. Votre deuxième exemple est la route que je suis allé avant de lire la solution eventRegistration plus tôt aujourd'hui. Cependant, mon code d'origine était faux aussi il semble que j'avais le '$ (document) .ready (function() {' à l'intérieur de ma fonction ShowPopup Donc, de toute façon, vous étiez une grande aide merci – desertjedi

+0

problème - heureux d'aider :) – Archer