Something like this?
// **************************************************
// Custom code for MainController
// Created: 2/16/2021 11:06:55 PM
// **************************************************
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;
using Infragistics.Win.UltraWinToolbars;
using Infragistics.Win.UltraWinGrid;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
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 **
readonly bool True = true;
readonly bool False = false;
readonly string uBAQName = "q4dsbJobMtlReplace";
readonly string[] colsToHide = new string[] { "JobMtl_RequiredQty","RowMod", "RowIdent", "SysRowID" };
string CompanyID = "";
EpiDataView edv;
DynamicQueryAdapter uBAQ;
DataSet dsPart;
DataTable results;
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
// End Wizard Added Custom Method Calls
etbOldPart.Validating += new System.ComponentModel.CancelEventHandler(etbOldPart_Validating);
etbNewPart.Validating += new System.ComponentModel.CancelEventHandler(etbNewPart_Validating);
ebSelectAll.Click += new System.EventHandler(ebSelectAll_Click);
ebGetJobList.Click += new System.EventHandler(ebGetJobList_Click);
ebUpdateParts.Click += new System.EventHandler(ebUpdateParts_Click);
uBAQ = new DynamicQueryAdapter(this.oTrans);
uBAQ.BOConnect();
uBAQ.GetByID(uBAQName);
CompanyID = ((Ice.Core.Session)(oTrans.Session)).CompanyID;
ebSelectAll.ReadOnly = true;
ebUpdateParts.ReadOnly = true;
ebGetJobList.ReadOnly = true;
}
public void DestroyCustomCode()
{
// ** Wizard Insert Location - Do not delete 'Begin/End Wizard Added Object Disposal' lines **
// Begin Wizard Added Object Disposal
// End Wizard Added Object Disposal
// Begin Custom Code Disposal
// End Custom Code Disposal
etbOldPart.Validating -= new System.ComponentModel.CancelEventHandler(etbOldPart_Validating);
etbNewPart.Validating -= new System.ComponentModel.CancelEventHandler(etbNewPart_Validating);
ebGetJobList.Click -= new System.EventHandler(ebGetJobList_Click);
ebUpdateParts.Click -= new System.EventHandler(ebUpdateParts_Click);
ebSelectAll.Click -= new System.EventHandler(ebSelectAll_Click);
uBAQ.Dispose();
edv.Dispose();
results.Dispose();
dsPart.Dispose();
}
private void ebSelectAll_Click(object sender, System.EventArgs args)
{
DataView dvMtl = edv.dataView;
eugJobsList.BeginUpdate();
eugJobsList.SuspendRowSynchronization();
foreach (DataRowView row in dvMtl)
{
if (!Convert.ToBoolean(row["Calculated_Select_Row"]))
{
row.BeginEdit();
row["Calculated_Select_Row"] = true;
row.EndEdit();
}
}
eugJobsList.ResumeRowSynchronization();
eugJobsList.EndUpdate();
}
private void ebGetJobList_Click(object sender, System.EventArgs args)
{
eugJobList_GetList();
if(eugJobsList.Rows.Count>1) ebSelectAll.ReadOnly = false;
}
private void eugJobList_GetList()
{
Ice.BO.QueryExecutionDataSet dsBAQ;
Ice.BO.DynamicQueryDataSet dsQuery;
Ice.BO.DynamicQueryDataSet dsQDesign;
if (((string)etbOldPart.Value!=null) && ((string)etbOldPart.Value != string.Empty) && (((string)(etbOldPart.Value)+" ").Trim()!=string.Empty)) {
try {
dsQuery = uBAQ.DynamicQueryData;
if (dsQuery.DynamicQuery.Rows.Count == 0)
{
dsQDesign = uBAQ.QueryDesignData;
DataRow targetRow;
foreach (DataTable table in dsQuery.Tables)
{
foreach (DataRow sourceRow in dsQDesign.Tables[table.ToString()].Rows)
{
targetRow = table.NewRow();
targetRow.ItemArray = sourceRow.ItemArray;
table.Rows.Add(targetRow);
}
}
}
dsBAQ = uBAQ.GetQueryExecutionParameters(dsQuery);
dsBAQ.ExecutionParameter[0].ParameterID = "SearchPart";
dsBAQ.ExecutionParameter[0].IsEmpty = false;
dsBAQ.ExecutionParameter[0].ParameterValue = ((string)(etbOldPart.Value)+" ").Trim();
dsBAQ.ExecutionParameter[1].ParameterID = "UnFirmJobs";
dsBAQ.ExecutionParameter[1].IsEmpty = false;
dsBAQ.ExecutionParameter[1].ParameterValue = ckbUnFirmJobs.Checked.ToString();
dsBAQ.AcceptChanges();
uBAQ.Execute(dsQuery, dsBAQ);
if (uBAQ.QueryResults != null && uBAQ.QueryResults.Tables.Count > 0)
{
results = uBAQ.QueryResults.Tables["Results"];
}
else
{
results = new DataTable();
}
edv = (EpiDataView)oTrans.EpiDataViews[uBAQName];
if (!(edv != null))
{
edv = new EpiDataView();
oTrans.Add(uBAQName, edv);
}
edv.dataView = results.DefaultView;
eugJobsList.DataSource = edv.dataView;
// Hide select columns
foreach(string colToHide in colsToHide)
{
if (edv.dataView.Table.Columns.Contains(colToHide))
{
eugJobsList.DisplayLayout.Bands[0].Columns[colToHide].Hidden = true;
}
}
}
catch (Exception ex) {
ExceptionBox.Show(ex);
}
} else { MessageBox.Show((etbOldPart.Value+" ").Trim()); }
}
private void ebUpdateParts_Click(object sender, System.EventArgs args)
{
DataView dvMtl = edv.dataView;
string msg = string.Empty;
string sJobsListUnFirm = string.Empty;
List<string> unFirmRows = new List<string>();
eugJobsList.BeginUpdate();
eugJobsList.SuspendRowSynchronization();
if (ckbUnFirmJobs.Checked)
{
foreach (DataRowView row in dvMtl)
{
if (!Convert.ToBoolean(row["JobHead_JobFirm"]) && Convert.ToBoolean(row["Calculated_Select_Row"]))
{
unFirmRows.Add(Convert.ToString(row["SysRowID"]));
row.BeginEdit();
row["JobHead_JobFirm"] = true;
row.EndEdit();
}
}
uBAQ.Update(uBAQ.DynamicQueryData, results.DataSet, false); // Update Jobs to Firm to enable part replacement
}
foreach (DataRowView row in dvMtl)
{
if (Convert.ToBoolean(row["Calculated_Select_Row"]))
{
row.BeginEdit();
row["JobMtl_PartNum"] = etbNewPart.Value;
row["JobMtl_Description"] = etbNewDesc.Value;
row.EndEdit();
}
}
uBAQ.Update(uBAQ.DynamicQueryData, results.DataSet, false);
if (ckbUnFirmJobs.Checked)
{
foreach (DataRowView row in dvMtl)
{
if (unFirmRows.Contains(Convert.ToString(row["SysRowID"])))
{
row.BeginEdit();
row["JobHead_JobFirm"] = false;
row.EndEdit();
}
}
uBAQ.Update(uBAQ.DynamicQueryData, results.DataSet, false); // Restore Job Firm Level
}
eugJobsList.ResumeRowSynchronization();
eugJobsList.EndUpdate();
}
private bool isValidPart(string pn)
{
bool recSelected = false;
string whereClause = "Company = '" + CompanyID + "' AND PartNum = '" + pn + "'" ;
dsPart = Ice.UI.FormFunctions.SearchFunctions.listLookup(this.oTrans, "PartAdapter", out recSelected, false, whereClause);
return recSelected;
}
private void etbOldPart_Validating(object sender, System.ComponentModel.CancelEventArgs args)
{
// Lookup Description for OldPartNum and unset ReadOnly if all good :)
if ( isValidPart(etbOldPart.Text) )
{
if(ebGetJobList.ReadOnly) ebGetJobList.ReadOnly = false;
}
else
{
if(!ebGetJobList.ReadOnly) ebGetJobList.ReadOnly = true;
MessageBox.Show(etbOldPart.Text + " is NOT a vaild part number.");
//args.Cancel=true;
}
}
private void etbNewPart_Validating(object sender, System.ComponentModel.CancelEventArgs args)
{
// Lookup Description for NewPartNum and unset ReadOnly if all good :)
if ( isValidPart(etbNewPart.Text) )
{
etbNewDesc.Value = dsPart.Tables[0].Rows[0]["PartDescription"];
if(ebUpdateParts.ReadOnly) ebUpdateParts.ReadOnly=false;
}
else
{
if(!ebUpdateParts.ReadOnly) ebUpdateParts.ReadOnly=true;
MessageBox.Show(etbNewPart.Text + " is NOT a vaild part number.");
//args.Cancel=true;
}
}
Dang late to the party, I found this code I had same thing for…
Just had no time until now to post this.