2009-03-31 10 views
0

Ich habe ein verstecktes Feld auf meiner Seiteasp.net versteckt Feld keine neuen Wert, müssen deaktiviert alternative

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

und es durch dieses Bündel von Code wird festgelegt, ein Onclick-Ereignis zu einer Reihe von 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; 
} 

Folgendes passiert: Wenn die Seite zuerst geladen wird, ist das ausgeblendete Feld nicht definiert, was es sein sollte. Wenn ich auf eine Reihe klicken und dann auf die Schaltfläche ‚Wählen‘, die dann diese Anrufe:

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

Die gridview deaktiviert wird (zusammen mit der Select-Taste) und eine weitere Gridview kommt (was auf je geschehen soll, was ist ausgewählt in der ersten Rasteransicht). So, jetzt, hier ist das Problem. Wenn ich auf eine Zeile in der Gridview klicke (ich spreche nur über die anfängliche Gridview, nicht die sekundäre Gridview, das ist kein Problem hier), und klicken Sie auf Auswählen, alles wird ausgegraut und die meiste Zeit, die Die ausgewählte Zeile wird hervorgehoben, wenn die Seite geladen wird (die anderen Male werden aus irgendeinem Grund standardmäßig Zeile 2 angezeigt). Dann sagen Sie, dass Sie auf Zeile 4 klicken, dann auf Zeile 1 klicken und dann auf Auswählen klicken, aus irgendeinem Grund bleibt Zeile 4 hervorgehoben und die Daten von Zeile 4 füllen dann die zweite Ansicht, als ob Sie nie Zeile 1 angeklickt hätten. Aber wenn ich Zeile 4 anklicke Klicken Sie dann auf Zeile 1 und dann erneut auf Zeile 1, wird gespeichert. Weiß jemand, warum das passiert?

Auch ich versuche, so ziemlich das erste Gridview zu deaktivieren, wenn das Auswahl getroffen wird, so muss ich

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

statt GridView.Enabled = false;

Wenn ein Benutzer erneut auf die Suchschaltfläche klickt (eine weitere Schaltfläche auf der Seite, die diese Rasteransicht sichtbar macht), möchte ich, dass die sekundäre Rasteransicht ausgeblendet wird und die primäre Rasteransicht (diese in Frage) werden wieder aktiviert. Aber das macht

wenn der Suchknopf ausgelöst wird nur deaktiviert die Gridview, die sehr seltsam ist. Jetzt weiß ich, dass das deaktivierte Feld von keinem anderen Browser außer IE unterstützt wird, und ich verwende es nur, weil ich überprüfen muss, ob die Gridview deaktiviert ist, so dass ein Benutzer nach der Auswahl nicht auf eine andere Zeile klicken kann (was passiert wenn ich nicht die folgenden:

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

So könnte jemand lassen Sie mich einen anderen Weg wissen, diese Aufgabe zu bewerkstelligen, nochmals vielen Dank im Voraus

Antwort

1

einige Bits von Informationen über Behinderte:.

  • Browser senden keine deaktivierten Kontrollwerte an den Server tion.
  • Deaktiviertes Feld wird von anderen Browsern unterstützt, verwendet jedoch ein anderes Modell. Hinweis Liste der unterstützten Browser: http://www.w3schools.com/tags/att_input_disabled.asp (auch wie es definiert ist deaktiviert = 'deaktiviert').

auch sehen, wie es zu der Nur-Lese-vergleicht: http://www.w3.org/TR/html401/interact/forms.html#h-17.12.2

Beachten Sie auch nach dem Standard seiner Unterstützung seines auf bestimmte Elemente. Dies ist wichtig, da Sie es auf ein nicht unterstütztes html-Element anwenden, was wahrscheinlich auch daran liegt, dass es in anderen Browsern in Ihrem Szenario nicht funktioniert.Sie können das unterstützte Steuerelement mithilfe eines Skripts deaktivieren, indem Sie die Steuerelemente dazu veranlassen, es wie $ get ("someClientID") anzuwenden. GetElementsByTagName ("input");

Verwandte Themen