JavaScript - kleine Codeschnipsel

12. Februar 2010 18:33

Es gibt immer wieder kleine hilfreiche Codeschnipsel oder Helferlein, die ich ständig suche und hier einfach mal sammeln möchte. Anregungen und/oder Ergänzungen sind jederzeit willkommen.
Wichtiger Hinweis:
Die meisten der hier stehenden Codeschnipsel sind unsuppportete Anpassungen am CRM und werden offiziell von Microsoft nicht unterstützt.

Code ausführen, der in einem anderen Feld im OnChange hinterlegt ist
crmForm.all.<Name des Feldes>.FireOnChange();

Schreibgeschütztes Feld in der DB speichern
crmForm.all.<Name der Feldes>.ForceSubmit = true;

Die GUID des Datensatzes im aktuellen Fenster ermitteln
crmForm.all.<Name des Feldes>.DataValue = window.location.href.split("?")[1].split("=")[1];
crmForm.all.<Name des Feldes>.DataValue = crmForm.all.new_recordguid.DataValue.replace("#", "");

crmForm.ObjectId;

Speichern eines Formulares erzwingen
window.opener.parent.document.crmForm.Save();

Speichern eines Formulares verhindern
Durch folgende zwei Codezeilen wird das speichern eines Formulares verhindert.
event.returnValue=false;
return false;

Abfangen, wenn ein CRM Formular mit dem x oben rechts geschlossen wird
window.attachEvent("onunload",dispose);
function dispose()
{
alert("Window is closing");
}

SetFocus
Unter CRM 4.0 gibt es ein Problem mit dem SetFocus Befehl in JavaScript, siehe hierzu auch diesen KB-Artikel.
Mit folgendem Trick funktioniert SetFocus dann auch im CRM.
var oField = crmForm.all.<meinFeld>;
oField.onblur = function() { oField.SetFocus(); oField.onblur = null; }
oField.SetFocus();

Namen eines Attributes auslesen
Code:
function GetFieldLabel(fieldname)
{
  var field = crmForm.all[fieldname+ '_c'];

  if (field != null){
    return field.firstChild.firstChild.nodeValue;
  }
  else {
    return '';
  }
}

alert(GetFieldLabel('subject'));
Code von ckeller aus diesem Artikel

Formular schließen ohne Sicherheitsabfrage bei geänderten Daten
Manchmal ist es wünschenswert, das ein CRM Formular mit JacaScript geschlossen werden kann. Solange die Daten nicht geändert wurden, ist das kein Problem, da reicht einfach window.close() um das Fenster zu schließen.
Wurden aber bereits Daten im Formular geändert, kommt eine Sicherheitsabfrage, ob das Formular wirklich ohne speichern geschlossen werden soll. Diese Sicherheitsabfrage kann mit folgendem Code ausgeschaltet werden.
Code:
crmForm.detachCloseAlert()
window.close()

Dabei kann die Zeile "crmForm.detachCloseAlert()" im OnLoad gesetzt werden oder direkt vor dem benötigten window.close() Befehl.
Code von thorstenkleibs aus diesem Artikel

Der Artikel ist unter diesem Link in meinem Blog erschienen.