Friday, February 13, 2009

Change Activity History to "All" instead of "Last 30 Days"

While there have been other bloggers out ther who have blogged about this topic (Stunnware, CustomerEffective, etc) this request is made so often and the answer isn't always the easiest to find...so my hope is that if more of us MSCRM bloggers blog about then it should be easier for everyone to find and use. This code snippet comes from Stunnware (here's the link).

Just take the code below and put it in your onLoad script and you should be all set.

Enjoy!

/**************************************************************
* Change the default view of a view selection combo box
**************************************************************/
SetDefaultView = function(viewCombo, viewName, appGrid) {

/* If the view has already been set, we don't need to do it again. */
if (viewCombo.value != viewName) {

/* Set the new view */
viewCombo.value = viewName;

/* Call RefreshGridView to run the code in the DHTML control.
* Without this call, only the selection in the combo box changes,
* but not the content of the grid */
appGrid.RefreshGridView();
}
}

/**************************************************************
* Event handler. Called whenever the ready state of the
* areaActivityHistoryFrame changes.
**************************************************************/
areaActivityHistoryFrame_OnReadyStateChange = function() {

/* Waiting until the frame has finished loading */
if (this.readyState == "complete") {

/* This is the frame we're interested in */
var frame = document.frames("areaActivityHistoryFrame");

/* And this is the view combo box */
var viewCombo = frame.document.getElementById("actualend");

/* This is the AppGridFilterContainer control we need to refresh the view */
var appGrid = frame.document.getElementById("AppGridFilterContainer");

/* The view combo box uses a style sheet that references a HTML
* control. We have to wait until the htc file is loaded,
* otherwise the call to FireOnChange in the SetDefaultView
* method will fail. */
if (viewCombo.readyState == "complete") {

/* If the control already has finished loading, we can
* directly set the new view. */
SetDefaultView(viewCombo, "All", appGrid);
}

else {
/* Otherwise we have to register another event handler
* waiting until all of the include files used by the
* combo box are loaded as well. */
viewCombo.onreadystatechange = function() {
if (this.readyState == "complete") {
SetDefaultView(this, "All", appGrid);
}
}
}
}
}

/* Set a new onclick event for the History navigation element
* This is where we register the onreadystatechange event handler */
if (document.getElementById('navActivityHistory') != null) {
document.getElementById('navActivityHistory').onclick = function() {
loadArea('areaActivityHistory');
document.frames('areaActivityHistoryFrame').document.onreadystatechange = areaActivityHistoryFrame_OnReadyStateChange;
}
}


David Fronk
Dynamic Methods Inc.

2 comments:

Anonymous said...

I tryed to use this code and it works, to change the selection in the combo box. But the appGrid.RefreshGridView() seams to be not available.

Dynamic Methods said...

Make sure that you have the function set up correctly because it's in the function call that the appGrid exists. If you haven't looked at the Stunnware site, you might want to consider it as Michael is rather good about how he explains his code.

David Fronk
Dynamic Methods Inc.

Post a Comment