Discussions relating to plugin development, and the Jiwa API.
by nsbandara » Wed Jun 02, 2021 2:25 pm
Please find full example that enables multi select for warehouse transfer inventory search.
- Code: Select all
using System;
using Microsoft.VisualBasic.CompilerServices;
#region "FormPlugin"
public class FormPlugin : System.MarshalByRefObject, JiwaFinancials.Jiwa.JiwaApplication.IJiwaFormPlugin
{
public override object InitializeLifetimeService()
{
// returning null here will prevent the lease manager
// from deleting the Object.
return null;
}
public void SetupBeforeHandlers(JiwaFinancials.Jiwa.JiwaApplication.IJiwaForm JiwaForm, JiwaFinancials.Jiwa.JiwaApplication.Plugin.Plugin Plugin)
{
if (JiwaForm is JiwaFinancials.Jiwa.JiwaWhouseTransferUI.frmWarehouseTransfer)
{
JiwaFinancials.Jiwa.JiwaWhouseTransferUI.frmWarehouseTransfer frmWarehouseTransfer = JiwaForm as JiwaFinancials.Jiwa.JiwaWhouseTransferUI.frmWarehouseTransfer;
frmWarehouseTransfer.LinesJiwaGrid.ButtonClicked += LinesJiwaGrid_ButtonClicked;
}
}
private void LinesJiwaGrid_ButtonClicked(object sender, FarPoint.Win.Spread.EditorNotifyEventArgs e)
{
JiwaFinancials.Jiwa.JiwaApplication.Controls.JiwaGrid linesGrid = sender as JiwaFinancials.Jiwa.JiwaApplication.Controls.JiwaGrid;
JiwaFinancials.Jiwa.JiwaWhouseTransferUI.frmWarehouseTransfer frmWarehouseTransfer = linesGrid.FindForm() as JiwaFinancials.Jiwa.JiwaWhouseTransferUI.frmWarehouseTransfer;
if (frmWarehouseTransfer.IsDisplaying == false)
{
string columnTag = Conversions.ToString(linesGrid.ActiveSheet.Columns[e.Column].Tag);
if (Operators.CompareString(columnTag, "PartNoLookup", false) == 0)
{
try
{
frmWarehouseTransfer.Manager.Search.Showing += Search_Showing;
string inventoryID = string.Empty;
string linePartNo = Conversions.ToString(linesGrid.get_GridText("PartNo", e.Row));
bool partsSelected = frmWarehouseTransfer.SearchInventory(ref inventoryID, ref linePartNo, null);
if (partsSelected)
{
int searchResultCount = frmWarehouseTransfer.Manager.Search.Results.Count;
for (int i = 1; i <= searchResultCount; i = checked(i + 1)) //iterate through results
{
inventoryID = Conversions.ToString(frmWarehouseTransfer.Manager.Search.Results[i].Fields[1].FieldValue);
frmWarehouseTransfer.WarehouseTransfer.Lines.AddLine(inventoryID, decimal.Zero);
}
}
throw new JiwaFinancials.Jiwa.JiwaApplication.Exceptions.ClientCancelledException();
}
finally
{
frmWarehouseTransfer.Manager.Search.Showing -= Search_Showing;
}
}
}
}
private void Search_Showing(object sender, EventArgs e)
{
JiwaFinancials.Jiwa.JiwaApplication.JiwaSearch.clsSearch clsSearch = sender as JiwaFinancials.Jiwa.JiwaApplication.JiwaSearch.clsSearch;
if (clsSearch.CurrentSearchMode == JiwaFinancials.Jiwa.JiwaApplication.JiwaSearch.clsSearch.SearchModes.jswInventory)
{
clsSearch.UsePinBoard = true; //enable multi select
}
}
public void Setup(JiwaFinancials.Jiwa.JiwaApplication.IJiwaForm JiwaForm, JiwaFinancials.Jiwa.JiwaApplication.Plugin.Plugin Plugin)
{
}
}
#endregion
- Attachments
-
- Plugin Test Multi Select.xml
- (27.61 KiB) Downloaded 28 times
-
nsbandara
- Occasional Contributor
-
- Posts: 43
- Joined: Tue Jul 16, 2013 5:02 pm
- Location: Sri Lanka
- Topics Solved: 11
-
by SBarnes » Wed Jun 02, 2021 2:45 pm
You could also use a delegate and hand the form into the button clicked function rather than needing the find form call given you already have the form.
Regards
Stuart Barnes
-
SBarnes
- Shihan
-
- Posts: 1619
- Joined: Fri Aug 15, 2008 3:27 pm
- Topics Solved: 175
by DannyC » Thu Jun 03, 2021 1:05 pm
That's awesome Nish. Thanks heaps.
-
DannyC
- Senpai
-
- Posts: 636
- Joined: Fri Mar 22, 2013 12:23 pm
- Topics Solved: 30
Return to Technical and or Programming
Who is online
Users browsing this forum: No registered users and 4 guests