Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Requirement was very simple: to be able to add a single document to the notes control of an entity – but no more than one document.
There may be a more elegant way to accomplish this, but the way I found was to
- go to customize the entity's form
- configure Tab to open when the form opens
- add jQuery to the form's libraries list.
- put the following code in a web resource and add that web resource to the form's libraries list:
function EnforceSingleNote() {
EnforceSingleNoteImpl();
setInterval("EnforceSingleNoteImpl()", 500);
}
function EnforceSingleNoteImpl() {
var notesInput = $(document.getElementById('notescontrol').contentWindow.document.getElementById('noteTextInput-create'));
var notesContainer = notesInput.closest('.notesContainerScrollDiv');
var nAttachments = notesContainer.find('.attachment').length;
var notesTextBoxDivs = notesContainer.find('.notesTextBoxDiv');
if (nAttachments > 0 && notesTextBoxDivs.length > 0) {
notesTextBoxDivs.hide();
}
var notesTextCreate = notesContainer.find('.ms-crm-Note-Text-create');
if (nAttachments > 0 && notesTextCreate.length > 0) {
notesTextCreate.hide();
}
}
- add an OnLoad event for the Notes control pointing to the EnforceSingleNote function in the web resource created before.
Basically, once every half a second, it checks whether there’s a note with an attachment. If there is, then it hides de controls where user can enter a new note.
You may be wondering why setInterval() instead of setTimeout(). Well, when you add a file, Dynamics creates on the fly a new “Enter a Note” textarea. The click handler needs to be set to that new textarea, too. Running this code once every second should be enough, and its perf hit should be minimal.