Results for tag "doppelklick"

CRM 2011 – Doubleclick im Subgrid deaktivieren/verhinden

Nach langer Zeit mal wieder was zum Thema CRM:

Nachdem wir in einem Projekt leider sehr große Hierarchien haben und die Subgrids bekanntermassen ja nur zwei Ebenen anzeigen, haben wir uns eine Art Schattenentität als Lösung einfallen lassen. Diese fungiert quasi als Linker zu den einzelnen Abhängigkeiten. Wie auch immer. Wir zeigen nun auf ein paar Formularen eine Art „Überblick“ an, die Daten in den Subgrids sind vom Typ „cust_linkentity“.

Das hat die negative Folgeerscheinung, dass bei Doppelklick das Standard-Formular der Entität „cust_linkentity“ geöffnet wird, obwohl diese Entität rein aus funktionellen Gründen existiert und für den Kunden eigentlich unsichtbar sein sollte.

Leider gibt es keinen von Microsoft unterstützten Weg, das zu verhindern. Meine Recherche hat mich zur Datei „AppGrid_DefaultData.htc“ gebracht, welche unter anderem die Funktion „handleDblClick()“ enthält.

ACHTUNG: Die nachfolgende Lösung ist von Microsoft explizit nicht supported!! Bitte nur machen, wenn Ihr euch über die Folgen im Klaren seid!

Original

function handleDblClick()
{
o = getSrcRow();
if (!IsNull(o))
if ((event.ctrlKey || event.srcElement.tagName == "INPUT" && event.srcElement.type == "checkbox") && o.selected)
unselectRow(o, true, true);
else
handleSelectRow(o);

var oSelectedRecords = getSelectedRecords();

if (oSelectedRecords.length == 0)
return;

var oSelRec = oSelectedRecords[0], oTr = oSelRec[3];

openRecord(oTr);

}
[/pre]

Wie Ihr seht, wird als Letztes mit "openRecord" das Formular der Entität geöffnet.

Angepasst

[sourcecode language="javascript"]
function handleDblClick()
{
o = getSrcRow();
if (!IsNull(o))
if ((event.ctrlKey || event.srcElement.tagName == "INPUT" && event.srcElement.type == "checkbox") && o.selected)
unselectRow(o, true, true);
else
handleSelectRow(o);

var oSelectedRecords = getSelectedRecords();

if (oSelectedRecords.length == 0)
return;

var oSelRec = oSelectedRecords[0], oTr = oSelRec[3];

var typename = o.getAttribute("otypename");
if (typename != "cust_linkentity") {

openRecord(oTr);
}
}
[/sourcecode]

Ich habe hier eine einfache Condition eingebaut, die das Formular nur öffnet, wenn es sich nicht um diesen einen bestimmten Typ handelt.

Cheers,
Chris