I am trying to call a Menu from within an Updatable Dashboard. All suggestions and ways I have tried to do this are requiring oTrans as a parameter for the function call (i.e. ProcessCaller). This results in an error “‘oTrans’ is not a member of ‘Script’”. I have been banging my head against a wall on this for a day and a half…is it possible to call a menu from within an updatable dashboard?
The Menu in question is the Job Traveler report.
Where are you doing the customization? I’m assuming you’ve deployed the dashbaord, and put it on a menu item and customizing there? You can’t add functionality in the “customize tracker” section.
I have tried in both places. When I attempt to create a customization in the actual launched dashboard, I get this Error:
Error: CS0234 - line 19 (19) - The type or namespace name ‘core’ does not exist in the namespace ‘Ice’ (are you missing an assembly reference?)
I have added the custom assembly Ice.Core.Sesion.dll. Additionally, I added using Ice.Core; to the references area in the physical code.
Here is an extraction of the code:
// **************************************************
// Custom code for MainController
// Created: 5/30/2024 10:06:41 AM
// **************************************************
using System;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Windows.Forms;
using Ice.BO;
using Ice.UI;
using Ice.Lib;
using Ice.Adapters;
using Ice.Lib.Customization;
using Ice.Lib.ExtendedProps;
using Ice.Lib.Framework;
using Ice.Lib.Searches;
using Ice.UI.FormFunctions;
using Ice.Core;
public class Script
{
// ** Wizard Insert Location - Do Not Remove 'Begin/End Wizard Added Module Level Variables' Comments! **
// Begin Wizard Added Module Level Variables **
// 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
// End Wizard Added Variable Initialization
// Begin Wizard Added Custom Method Calls
this.epiButtonC1.Click += new System.EventHandler(this.epiButtonC1_Click);
// 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.epiButtonC1.Click -= new System.EventHandler(this.epiButtonC1_Click);
// End Wizard Added Object Disposal
// Begin Custom Code Disposal
// End Custom Code Disposal
}
private void epiButtonC1_Click(object sender, System.EventArgs args)
{
// ** Place Event Handling Code Here **
PrintJobTraveler(txtJobOper_JobNum.Text)
}
public void PrintJobTraveler(string jobNumString)
{
string jobNumber = jobNumString;
Ice.Core.Session otSession = (Ice.Core.Session)this.oTrans.Session;
string strWorkstationID = Ice.Lib.Report.EpiReportFunctions.GetWorkStationID(otSession);
// instantiate job traveler variable
Erp.Proxy.Rpt.JobTravImpl Job_Trav_Report = WCFServiceSupport.CreateImpl<Erp.Proxy.Rpt.JobTravImpl>(otSession, Erp.Proxy.Rpt.JobTravImpl.UriPath);
Erp.Rpt.JobTravDataSet jtds = Job_Trav_Report.GetNewParameters();
jtds.JobTravParam[0].PrntAllMassPrnt = false;
jtds.JobTravParam[0].Jobs = jobNumber;
jtds.JobTravParam[0].BarCodes = true;
jtds.JobTravParam[0].AutoAction = "SSRSPREVIEW";
jtds.JobTravParam[0].AgentID = "SystemAgent";
jtds.JobTravParam[0].ReportStyleNum = 1002;
jtds.JobTravParam[0].WorkstationID = strWorkstationID;
jtds.JobTravParam[0].SSRSRenderFormat = "PDF";
jtds.JobTravParam[0].RowMod = "A";
Job_Trav_Report.RunDirect(jtds);
}
}
The lowercase c in Core is due to when I add the custom reference, it shows in the tree as ice.core.session:
I have tried with using ice.core;
using Ice.Core;
using Ice.core;
Occasionally when adding references, you need to ignore the errors and save. Then close out the form completely.
Re-open and check.
and it’s definitely using Ice.Core;
I do something very similar on most of my dashboards which allows the user to select a line, then open the record associated with that line. I would assume you can modify this for what you are attempting to do. And it does not require Core or any other added assemblies.
private void btnOpen_Click(object sender, System.EventArgs args)
{
// ** Place Event Handling Code Here **
// Opens attendance form and passes the Key selected above
LaunchFormOptions lfo = new LaunchFormOptions();
lfo.IsModal = true;
lfo.SuppressFormSearch = true;
lfo.ValueIn = key2;
lfo.SuppressFormSearch = true;
ProcessCaller.LaunchForm(this.oTrans, "UDITINVE",lfo);
}
private void grid1_AfterSelectChange(object sender, Infragistics.Win.UltraWinGrid.AfterSelectChangeEventArgs args)
{
key2 = grid1.ActiveRow.GetCellValue("UD29_Key2").ToString();
}
This did the trick. Thank you all for your input.