Benutzer mit den meisten Antworten
Checkbox nicht gecheckt

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> </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> </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
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
Alle Antworten
-
-
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
-
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
-
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
-
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
-
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
-
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