Jake, did you get this figured out? If not, I am happy to help. I agree with Rob that you would use an input parameter that is bound to your list box (Bound Parameter property on your list box), then pass that value on the 'Selection Changed Server Task Arguments' property on your button component. It would look similar to below using the following syntax "{Business Rule Name}{Function Name}{Arguments}"
{BusinessRuleName}{InitializeProjectDashboard}{ProjectId = |!param_ProjectId!|}
From your screenshot, it looks like you already have this input parameter to display the selected project on the button.
You will need to set your 'Selection Changed Server Task" property on the button to one of the 'Execute Dashboard Extender Business Rule...' options.
You will also need to change your 'User Interface Action' properties on your button to open the new dashboard.
Then, as Rob stated, you would use a Dashboard Extender Business Rule.
Add a function that reads the project Id that you included in the button's 'Selection Changed Server Task Arguments' and add that to the selectionChangedTaskResult.ModifiedCustomSubstVars dictionary. Something similar to below:
Public Function InitializeProjectDashboard(ByVal si As SessionInfo, ByVal globals As BRGlobals, ByVal api As Object, ByVal args As DashboardExtenderArgs) As XFSelectionChangedTaskResult
Try
'Set return object
Dim selectionChangedTaskResult As New XFSelectionChangedTaskResult()
selectionChangedTaskResult.IsOK = True
selectionChangedTaskresult.ChangeCustomSubstVarsInDashboard = True
'Get project Parameter Values
Dim projectId As String = args.NameValuePairs.XFGetValue("ProjectId")
'Update param
selectionChangedTaskResult.ModifiedCustomSubstVars.Add("param_ProjectId", projectId)
Return selectionChangedTaskResult
Catch ex As Exception
Throw ErrorHandler.LogWrite(si, New XFException(si, ex))
End Try
End Function
Then In the 'Main' function add an Else If and capture you function name and then call the function you just created.
Else If (args.FunctionName.XFEqualsIgnoreCase("InitializeProjectDashboard"))
selectionResult = Me.InitializeProjectDashboard(si, globals, api, args)
Return selectionResult
End If
If the project Id gets passed to the new dashboard but pops up in the default parameter screen, you can suppress this by creating a Supplied Parameter (spp_ProjectId), linking it to the param_ProjectId parameter and adding it as a component to the top level dashboard you are initializing.
I hope this help.