asp.net
  • javascript
  • gridview
  • hidden
  • 2009-03-31 3 views 0 likes 
    0

    J'ai un champ caché sur ma pageasp.net champ caché ne pas fixer une nouvelle valeur, besoin désactivé autre

    <input runat="server" type="hidden" id="selectedIndex" /> 
    

    et il est fixé par ce groupe de code, un événement onclick à la suite d'un gridview:

    var gridViewCtlId = '<%=GridView.ClientID%>'; 
    var selectedIndex = '#<%=selectedIndex.ClientID%>'; 
    var itemVisible = '<%=ItemVisible.ClientID%>'; 
    var gridViewCtl = null; 
    var curSelRow = null; 
    var previousRowIndx = null; 
    
    window.onload = function showQuery() 
    { 
        if ($(selectedIndex).val() != undefined) 
        { 
         if ($(selectedIndex).val() != '') 
         { 
          var prevRowID = $(selectedIndex).val(); 
          var prevRow = getSelectedRow(prevRowID); 
          prevRow.style.backgroundColor = '#1A8CD4'; 
         } 
        }  
    } 
    
    function getGridViewControl(rowIdx) 
    { 
        if (gridViewCtl == null) 
        { 
         gridViewCtl = document.getElementById(gridViewCtlId); 
        } 
    } 
    
    function onGridViewRowSelected(rowIdx) 
    { 
        if (document.getElementById(gridViewCtlId).disabled == false) 
        { 
         var selRowCCA = getSelectedRow(rowIdx); 
         if (curSelRow != null) 
         { 
          var previousRow = getSelectedRow(previousRowIndx); 
    
          var CountIdx = previousRowIndx % 2; 
          if (document.getElementById(itemVisible) == null) 
          { 
           if (CountIdx == 0) 
           { 
            previousRow.style.backgroundColor = 'Silver'; 
           } 
           else 
           { 
            previousRow.style.backgroundColor = 'White'; 
           } 
          } 
         } 
    
         if (null != selRow) 
         { 
          previousRowIndx = rowIdx; 
          curSelRow = selRow; 
          selRow.style.backgroundColor = '#1A8CD4'; 
         } 
        } 
    } 
    function getSelectedRow(rowIdx) 
    { 
        getGridViewControl(rowIdx); 
        if (gridViewCtl != null) 
        { 
         $(selectedIndex).val(rowIdx); 
         return gridViewCtl.rows[rowIdx]; 
        } 
        return null; 
    } 
    

    Voici ce qui se passe: Lorsque la page est chargée, le champ masqué est indéfini, ce qui devrait être le cas. Lorsque je clique sur une ligne, puis cliquez sur le « select » bouton qui appelle ensuite ceci:

    GridView.Attributes.Add("disabled", "true"); 
    

    GridView est désactivé (avec le bouton de sélection) et un autre gridview arrive (ce qui devrait se produire en fonction de ce qui est séleted dans le premier gridview). Alors maintenant, voici le problème. Lorsque je clique sur une ligne dans la grille (je ne parle que de la grille initiale, pas du secondaire qui se présente, ce n'est pas un problème ici), et cliquez sur sélectionner, tout devient grisé et la plupart du temps, le La ligne sélectionnée sera mise en surbrillance lorsque la page sera chargée (les autres fois, pour une raison ou une autre, la ligne 2 sera utilisée par défaut). Ensuite, disons que vous cliquez sur la rangée 4 puis cliquez sur la ligne 1 puis cliquez sur sélectionner, pour une raison quelconque, la ligne 4 restera en surbrillance et les données de la rangée 4 rempliront la deuxième grille, comme si vous n'aviez jamais cliqué sur la ligne 1. puis cliquez sur la ligne 1, puis à nouveau sur la ligne 1, sauvegarde-t-elle. Est-ce que quelqu'un sait pourquoi cela arrive?

    De plus, je suis à peu près en essayant de désactiver la première gridview lorsque select est frappé si je

    GridView.Attributes.Add("disabled", "true"); 
    

    plutôt que GridView.Enabled = false; Si un utilisateur clique à nouveau sur le bouton de recherche (un autre bouton situé précédemment sur la page qui rend cette grille visible), je voudrais que la grille secondaire soit masquée, et la grille principale (celle en question) devenir réactivé. Mais faire

    GridView.Attributes.Add("disabled", "false"); 
    

    lorsque le bouton de recherche est déclenché désactive seulement le gridview, ce qui est très bizarre. Maintenant, je sais que le champ désactivé n'est supporté par aucun autre navigateur sauf IE, et je ne l'utilise que parce que j'ai besoin de vérifier si le gridview est désactivé, donc un utilisateur ne peut pas cliquer sur une autre ligne si je ne fais pas ce qui suit:

    if (document.getElementById(gridViewCtlId).disabled == false) 
    

    Alors quelqu'un pourrait-il me faire savoir d'une autre façon d'accomplir cette tâche Merci encore à l'avance

    Répondre

    1

    Quelques bits d'informations sur désactivé:.

    • Les navigateurs n'enverront aucune valeur de contrôle désactivé au serveur. tion.
    • Le champ désactivé est pris en charge par d'autres navigateurs, mais il utilise un modèle différent. Notez la liste des navigateurs pris en charge: http://www.w3schools.com/tags/att_input_disabled.asp (également comment il est défini désactivé = 'désactivé').

    Voir aussi comment il se compare à la lecture seule: http://www.w3.org/TR/html401/interact/forms.html#h-17.12.2

    Notez également selon la norme son soutien son limité à certains éléments. Ceci est important, car vous l'appliquez sur un élément html non pris en charge, ce qui est également une cause probable de son non-fonctionnement dans d'autres navigateurs de votre scénario.Vous pouvez désactiver le contrôle pris en charge en utilisant un script, en demandant aux contrôles de l'appliquer comme $ get ("someClientID"). GetElementsByTagName ("input");

    Questions connexes