none
Checkbox nicht gecheckt RRS feed

  • Frage

  • Hallo,

    ich habe Formular Angebot schließen (SFA/quotes/dlg_close.aspx) etwas bearbeitet. Und zwar habe ich die Eigenschaft "checked" von 'rdCreateRevisedQuote' auf 'rdNoRevisedQuote' gesetzt. Im Formular ist das sind das die Checkboxen "Überarbeitetes Angebot erstellen" und "Dieses Angebot nicht überarbeiten". Anbei alter und neuer Code(-teil):

    Alt:
    <td colspan="3">
    <table width='100%' style='table-layout:fixed'>
    <tr>
    <td>&nbsp;</td>
    </tr>
    <tr>
    <td><input id='rdCreateRevisedQuote' type='radio' class='radio' name='rgReviseQuote' checked onpropertychange='updateUIState()'/><label id="lblCreateRevisedQuote" for="rdCreateRevisedQuote"><loc:Text ResourceId="Web.SFA.quotes.dlg_close.aspx_167" runat="server"/></label></td>
    </tr>
    <tr>
    <td><input id='rdNoRevisedQuote' type='radio' class='radio' name='rgReviseQuote' onpropertychange='updateUIState();'/><label for="rdNoRevisedQuote"><loc:Text ResourceId="Web.SFA.quotes.dlg_close.aspx_170" runat="server"/></label></td>
    </tr>
    </table>
    </td>
    </tr>
    <tr>

    Neu:
    <td colspan="3">
    <table width='100%' style='table-layout:fixed'>
    <tr>
    <td>&nbsp;</td>
    </tr>
    <tr>
    <td><input id='rdCreateRevisedQuote' type='radio' class='radio' name='rgReviseQuote' onpropertychange='updateUIState()'/><label id="lblCreateRevisedQuote" for="rdCreateRevisedQuote"><loc:Text ResourceId="Web.SFA.quotes.dlg_close.aspx_167" runat="server"/></label></td>
    </tr>
    <tr>
    <td><input id='rdNoRevisedQuote' type='radio' class='radio' name='rgReviseQuote' checked onpropertychange='updateUIState();'/><label for="rdNoRevisedQuote"><loc:Text ResourceId="Web.SFA.quotes.dlg_close.aspx_170" runat="server"/></label></td>
    </tr>
    </table>
    </td>
    </tr>
    <tr>

    Das Problem ist nun folgendes. Wenn ich ein Angebot schließe, dann ist die Option "Dieses Angebot nicht überarbeiten" aktiviert, also so wie ich mir das vorstelle. Wenn ein anderer Benutzer ein Angebot schließt, ist gar keine Checkbox aktiviert, das Programm verhält sich aber so, als ob die Option "Dieses Angebot nicht überarbeiten" aktiviert wäre. D.h. andere Benutzer sehen nicht, welche Option ausgewählt ist.

    Hat irgendjemand eine Erklärung dafür?

    LG, Peter 

    Donnerstag, 1. Juli 2010 08:32

Antworten

  • Hallo Peter,

     

    nen kleinen Unterschied gibt es da schon ( unabhängig davon, ob meine Lösung jetzt funktioniert oder nicht).

    Du hast im HTML die Änderung gemacht, welche beim Öffnen aber noch durch das Jscript geändert werden kann..

    Beispiel:

    if (IsOutlookClient())
    {
    rdNoRevisedQuote.checked = <%= _offline.ToString().ToLower() %>;
    rdCreateRevisedQuote.disabled = <%= _offline.ToString().ToLower() %>;
    lblCreateRevisedQuote.disabled = <%= _offline.ToString().ToLower() %>;
    }
    
    updateUIState( );
    

    Beides Funktionen die im Onload Script ausgeführt werden.

    Das updateUIState wird einmal im onload und sonst bei Änderungen ausgeführt.

    In dieser Funktion könnten deine beschrieben Probleme beeinflusst werden.

     

    Versuche alternativ, mal meinen Code ans Ende des window.onload zu setzen..

     

    Andreas

    • Als Antwort vorgeschlagen localh0rst Dienstag, 6. Juli 2010 14:12
    • Als Antwort markiert Michael Sulz Donnerstag, 15. Juli 2010 06:07
    Dienstag, 6. Juli 2010 13:22

Alle Antworten

  • Ich würde zunächst mal am Client die Temporären Internetdateien löschen. Möglicherweise sind die alten Seiten noch im Cache. Ähnlich, wie es auch bei den Rollups notwendig ist.


    Gruß Carsten Groth http://carstengroth.spaces.live.com
    Donnerstag, 1. Juli 2010 08:58
  • Hallo Peter,

    die ASPX Seiten zu ändern ist nicht supported und ich würde Dir dringend davon abraten.

    Vielleicht beschreibst Du uns ja mal was die eigentliche Anforderung ist. Ich vermute mit etwas Javascript sollte das zu lösen sein.

    Grüße

    Thomas

    Donnerstag, 1. Juli 2010 08:59
  • Hallo,

    @Carten Groth: Temporäre Internetdateien wurden gelöscht. Kein Erfolg.

    @Thomas Bergmair: Die Anforderung ist folgende. Oft lesen die Benutzer gar nicht, was im Formular steht. Wenn man einfach auf OK klickt, dann wird ein überarbeitetes Angebot erstellt. Dann klickt man vielleicht noch auf speichern und schließen und schon hat man ein neues Angebot erstellt. Standardmäßig ist die Option "Überarbeitetes Angebot erstellen" aktiv. Ich hätte gerne als Standardoption "Dieses Angebot nicht überarbeiten".

    Das Problem ist, dass ich kein OnLoad-Ereignis schreiben kann, weil das kein normales Formular ist. Oder gibt es da eine andere Möglichkeit?

    Mich wundert es, wieso ICH das richtige Ergebnis sehe, ein ANDERER User aber keine Option aktiviert sieht.

    LG, Peter

    Donnerstag, 1. Juli 2010 10:15
  • Hat sonst keiner eine Idee?
    Montag, 5. Juli 2010 12:05
  • Hallo Peter,

    es bringt dir in deinem Fall nichts im HTML Code zu ändern.

    Versuche in der JavaScript window.onload funktion folgendes einzubauen.

     

    try {
     var noRevise = document.getElementById("rdNoRevisedQuote");
     noRevise.checked = true;
    
     // Blendet den Optionsbereich aus
    noRevise.parentElement.parentElement.parentElement.style.display = "none";
    // Blendet die Option zum Schließen einer Verkaufschance aus
    document.getElementById("tdCloseOpp").style.display = "none"; } catch(e){}

     

    Je nachdem was deine Anforderung ist, änder den Code, ansonten poste mal deine Anforderung.

     

    Gruß

    Andreas

    Montag, 5. Juli 2010 12:30
  • Hallo Andreas

    Die Anforderung ist folgende. Wenn Angebote geschlossen werden (aus welchem Grund auch immer), dann öffnet sich der Webseitendialog "SFA/quotes/dlg_close.aspx". Oft lesen die Benutzer gar nicht, was in diesem Webseitendialog steht. Wenn man einfach auf OK klickt, dann wird ein überarbeitetes Angebot erstellt. Dann klickt man vielleicht noch auf speichern und schließen und schon hat man ein neues Angebot erstellt. Standardmäßig ist die Option "Überarbeitetes Angebot erstellen" aktiv. Ich hätte gerne als Standardoption "Dieses Angebot nicht überarbeiten".

    Wie kann ich bei einem Webseitendialog eine onLoad-Anweisung schreiben? Geht das in VisualStudio?

    Das Problem ist lediglich folgendes. Wenn ich ein Angebot mit dem von mir überarbeiteten Code schließe, dann ist die Option "Dieses Angebot nicht überarbeiten" aktiviert, also so wie ich mir das vorstelle. Wenn ein anderer Benutzer ein Angebot schließt, ist gar keine Checkbox aktiviert, das Programm verhält sich aber so, als ob die Option "Dieses Angebot nicht überarbeiten" aktiviert wäre. D.h. andere Benutzer sehen nur nicht, welche Option ausgewählt ist.

    Hat irgendjemand eine Erklärung dafür?

    LG, Peter

    Dienstag, 6. Juli 2010 10:36
  • Hallo Peter,

     

    das tut mein Code aus meiner Sicht schon. Eine ähnliche Anforderung hatten wir auch schon.

     

    Tue folgendes und denk dran, dass es unsupported ist ( Sicherung machen ).

    1. Öffne die Datei dlg_close.aspx. Suche nach der Funktion function window.onload ( eigentlihc müsste es die geben... )

    2. Sollte es die geben füge folgendes dort ein:

    try {
    
    var noRevise = document.getElementById("rdNoRevisedQuote");
    noRevise.checked = true;
    
    } catch(e){}

    3. Sollte es die Funktion noch nicht geben dann fügst du folgendes unter dem <script> element ein

    window.onload = function(){
    
    try {
    
    var noRevise = document.getElementById("rdNoRevisedQuote");
    noRevise.checked = true;
    
    } catch(e){}
    
    }

    Achte darauf, nach jeder Änderung in der aspx, das Angebot einmal zuschliessen und wieder neu zuöffnen ( wegen Cache ).

     

    Gruß

    Andreas

    Dienstag, 6. Juli 2010 10:46
  • Hallo Andreas,

    ich habs probiert und es hat bei mir funktioniert. Ob andere Benutzer die markierte Checkbox sehen muss ich erst testen.

    Es hat genau so funktioniert, wie die oben beschriebene Änderung von mir. Im Prinzip ist meine Änderung etwas leichter, weil ich die Grundlage des Formulars ändere. In der Funktion window.onload wird diese Grundlage ja nicht verändert (sonst würde ich ja meine Änderung nicht sehen).

    Für mich stellt sich nun die Frage, wieso ich die Änderung sehe, andere Benutzer aber nicht (und es liegt nicht am Cache).

    LG, Peter

    Dienstag, 6. Juli 2010 12:50
  • Hallo Peter,

     

    nen kleinen Unterschied gibt es da schon ( unabhängig davon, ob meine Lösung jetzt funktioniert oder nicht).

    Du hast im HTML die Änderung gemacht, welche beim Öffnen aber noch durch das Jscript geändert werden kann..

    Beispiel:

    if (IsOutlookClient())
    {
    rdNoRevisedQuote.checked = <%= _offline.ToString().ToLower() %>;
    rdCreateRevisedQuote.disabled = <%= _offline.ToString().ToLower() %>;
    lblCreateRevisedQuote.disabled = <%= _offline.ToString().ToLower() %>;
    }
    
    updateUIState( );
    

    Beides Funktionen die im Onload Script ausgeführt werden.

    Das updateUIState wird einmal im onload und sonst bei Änderungen ausgeführt.

    In dieser Funktion könnten deine beschrieben Probleme beeinflusst werden.

     

    Versuche alternativ, mal meinen Code ans Ende des window.onload zu setzen..

     

    Andreas

    • Als Antwort vorgeschlagen localh0rst Dienstag, 6. Juli 2010 14:12
    • Als Antwort markiert Michael Sulz Donnerstag, 15. Juli 2010 06:07
    Dienstag, 6. Juli 2010 13:22
  • Hallo Andreas,

    hat funktioniert. Tausend dank. Ich muss mich noch verstärkt auf JavaScript einlesen, dann gehts sicher besser.

    LG, Peter Andrlik

    Dienstag, 6. Juli 2010 14:06