2010-03-02 4 views
0

J'ai ModalPopupExtender qui contient un UserControl qui consiste essentiellement en un GridView et un HiddenField, tous les deux sur un UpdatePanel. Le champ HiddenField stocke le numéro de la ligne sélectionnée. De cette façon j'évite les postbacks lors de la sélection des lignes.
ModalPopupExtender contient également des boutons que je veux désactiver lorsqu'aucune des lignes de GridView n'est sélectionnée. Par conséquent, javascript suivant est exécuté dans la méthode pageLoad():ASP.NET GridView doit afficher le mouvement de la souris

function trackSelection() 
{ 
    var hf = $get('<%= SXGVSavedTemplates.ClientID %>'+ '_hfSelected'); 

     if(hf != null) 
     { 
      hf.onpropertychange = function() 
      { 
       var btnOk = $get('<%= btnLoadTemplateOK.ClientID %>'); 
       var btnDelete = $get('<%= btnLoadTemplateDelete.ClientID %>'); 
       var hfSelected = $get('<%= SXGVSavedTemplates.ClientID %>'+ '_hfSelected'); 

       var disabled = (hfSelected.value == ""); 
       if(btnOk != null) 
       { 
        btnOk.disabled = disabled; 
       } 
       if(btnDelete != null) 
       { 
        btnDelete.disabled = disabled; 
       } 
      } 
     } 
} 


Maintenant, cela fonctionne parfaitement bien. Lorsque ModalPopup est affiché, les boutons sont désactivés. Dès que je sélectionne l'une des lignes, les boutons sont activés. C'est bien. Mais le problème est que le UserControl avec le GridView disparaît! De plus, lorsque je redimensionne la fenêtre du navigateur, il réapparaît.
Notez que pour certaines raisons (ne demandez pas pourquoi), une version CTP de la bibliothèque Ajax Control Toolkit est utilisée dans le projet. Cela pourrait-il être le problème?
J'apprécierais toutes les suggestions.

Répondre

0

J'ai trouvé une solution. Apparemment, le navigateur ne redessine pas la grille pour une raison quelconque. Je l'ai donc forcé à le faire. Par conséquent, j'ai modifié le script ajouter ce qui suit:

var grid = $get('<%= SXGVSavedTemplates.ClientID %>'+'_gv'); 
if(grid != null) 
{ 
    grid.className = grid.className; 
} 


Cela a fait le travail.

Questions connexes