Dashboard - Shared Tracker View

Is there a way to share the tracker criteria between multiple queries in a dashboard?
I don’t want to use the publish/subscribe because I don’t want to filter the other query windows on the exact part number. I want to filter on “starts with” which is what the initial tracker view filters for.

If anyone is interested, I accomplished this by adding tracker views to each grid, deploying the dashboard as an assembly, and writing some script that populated the other 2 tracker views based on the input of the first one.
Here’s the script:

public class Script
{
    // ** Wizard Insert Location - Do Not Remove 'Begin/End Wizard Added Module Level Variables' Comments! **
    // Begin Wizard Added Module Level Variables **
    private EpiTextBox partNum;
    private EpiTextBox ordersPart;
    private EpiTextBox quotesPart;
    // End Wizard Added Module Level Variables **

    // Add Custom Module Level Variables Here **

    public void InitializeCustomCode()
    {
	    // ** Wizard Insert Location - Do not delete 'Begin/End Wizard Added Variable Initialization' lines **
	    // Begin Wizard Added Variable Initialization
	    this.partNum = (EpiTextBox)csm.GetNativeControlReference("afe02e6a-a71c-47bf-84f8-a17e021a83f8");
	    this.ordersPart = (EpiTextBox)csm.GetNativeControlReference("777a0cc2-b76b-454e-881a-21a2a37f4e15");
	    this.quotesPart = (EpiTextBox)csm.GetNativeControlReference("f3c72eee-ec34-43ac-b7df-e33a9bab7f02");

	    // End Wizard Added Variable Initialization

	    // Begin Wizard Added Custom Method Calls

	    this.partNum.Validated += new System.EventHandler(this.partNum_Validated);
	    // End Wizard Added Custom Method Calls
    }

    public void DestroyCustomCode()
    {
	    // ** Wizard Insert Location - Do not delete 'Begin/End Wizard Added Object Disposal' lines **
	    // Begin Wizard Added Object Disposal
	    this.partNum = null;
	    this.ordersPart = null;
	    this.quotesPart = null;
	    this.partNum.Validated -= new System.EventHandler(this.partNum_Validated);
	    // End Wizard Added Object Disposal

	    // Begin Custom Code Disposal

	    // End Custom Code Disposal
    }

    private void partNum_Validated(object sender, System.EventArgs args)
    {
	    // ** Place Event Handling Code Here **
	    try
	    {
		    string searchOpts = partNum.Value.ToString();

		    if( searchOpts != "" )
		    {
			    ordersPart.Value = searchOpts;
			    quotesPart.Value = searchOpts;
		    }
	    }
	    catch{}
    }
}
4 Likes

Thank you sir, I need to something very similar.

1 Like

Arron / Willetta:

         How did you handle the 'dashboard refresh' ? I am finding that I still need '2' refreshes if I have 2 tracker views - whichever tracker I was last 'in' is the one that the refresh works for.

Have you enabled “Refresh All” in the dashboard?

Yes I have that enabled.

That’s all that was required for me.
Make sure you’re actually clicking on the refresh all icon and not the normal one.
A few of my users get confused by that.

image

Aaron,

After taking another look , I believe my issue is I am still ‘subscribing / publishing’ between queries – which I don’t need to do if I am

Controlling the secondary tracker input thru code.

I am basically presenting this customized dashboard as an application to the user, they will be required to input only Tracker 1 and ‘refresh all’ .

Thank you , I have more work to do.

Thanks for putting your solution to this. It seems to be what I’m trying to do.
I take it you didn’t find any other solution? It seems to me there should be a way to use the publish (from the Tracker view) and subscribe in the other query, but I can’t work out how to see the published tracker view in the filter of the other query.
Also, did you hide the unwanted panels?

Honestly, this has been working and haven’t had the need to dig any deeper, so I stuck with it.

I pseudo hid them; I made the with of the tab as small as I could make it. If I recall, I think I had issues if I outright hid it, but it’s been awhile, so I don’t fully recall.

I guess I should stop trying to make it work how I think it should work and just use the less than ideal (IMO) solution.