0
案件の機能を営業案件のように案件に追加しようとしています。私はSOOrderEntryのコードを読み、同じ機能を再現しようとしました。案件に項目を追加する機能を追加する
[項目の追加]メニューでは、スマートパネルにフィルタオプションが表示されますが、データは入力されません。私はSales Order Add Item Smartパネル設定と設定を比較しましたが、何も見逃しませんでした。
私は、オポチュニティに必要な変更を加えて、販売注文のようなテーブル構造とイベントを複製しました。
#region SiteStatus Lookup
public PXFilter<OpportunitySiteStatusFilter> oppsitestatusfilter;
[PXFilterable]
[PXCopyPasteHiddenView]
public OpportunityStatusLookup<OpportunitySiteStatusSelected, OpportunitySiteStatusFilter> opportunitysitestatus;
public PXAction<CROpportunity> addOppBySite;
[PXUIField(DisplayName = "Add Stock Item", MapEnableRights = PXCacheRights.Select, MapViewRights = PXCacheRights.Select)]
[PXLookupButton]
public virtual IEnumerable AddOppBySite(PXAdapter adapter)
{
oppsitestatusfilter.Cache.Clear();
if (opportunitysitestatus.AskExt() == WebDialogResult.OK)
{
return AddOppSelBySite(adapter);
}
oppsitestatusfilter.Cache.Clear();
opportunitysitestatus.Cache.Clear();
return adapter.Get();
}
public PXAction<CROpportunity> addOppSelBySite;
[PXUIField(DisplayName = "Add", MapEnableRights = PXCacheRights.Select, MapViewRights = PXCacheRights.Select, Visible = false)]
[PXLookupButton]
public virtual IEnumerable AddOppSelBySite(PXAdapter adapter)
{
foreach (OpportunitySiteStatusSelected line in opportunitysitestatus.Cache.Cached)
{
if (line.Selected == true && line.QtySelected > 0)
{
CROpportunityProducts newline = PXCache<CROpportunityProducts>.CreateCopy(Base.Products.Insert(new CROpportunityProducts()));
newline.SiteID = line.SiteID;
newline.InventoryID = line.InventoryID;
newline.SubItemID = line.SubItemID;
newline.UOM = line.SalesUnit;
//newline.AlternateID = line.AlternateID;
//newline = PXCache<SOLine>.CreateCopy(Transactions.Update(newline));
//if (newline.RequireLocation != true || PXAccess.FeatureInstalled<FeaturesSet.warehouseLocation>())
// newline.LocationID = null;
newline = PXCache<CROpportunityProducts>.CreateCopy(Base.Products.Update(newline));
//newline.Qty = line.QtySelected;
cnt = 0;
Base.Products.Update(newline);
}
}
opportunitysitestatus.Cache.Clear();
return adapter.Get();
}
protected virtual void OpportunitySiteStatusFilter_RowInserted(PXCache cache, PXRowInsertedEventArgs e)
{
OpportunitySiteStatusFilter row = (OpportunitySiteStatusFilter)e.Row;
if (row != null && Base.Products.Current != null)
row.SiteID = Base.Products.Current.SiteID;
}
int cnt;
public IEnumerable<PXDataRecord> ProviderSelect(BqlCommand command, int topCount, params PXDataValue[] pars)
{
cnt++;
return Base.ProviderSelect(command, topCount, pars);
}
#endregion
よろしく、 R. Muralidharan
コードをデバッグすると、グリッド用に定義したdatamemberの対応するキャッシュにデータが移入されていますか? はいの場合、ここでの問題はグリッドの自動サイズ変更になります。データを内部で見ることができるように、グリッドの自動サイズをtrueに設定します。 – Hybridzz
カスタムSmartPanel aspxをSalesOrderEntry画面のSmartPanel Add Item SmartPanelと比較することができます。 @Hybridzzが述べたように、あなたはAutoSizeプロパティを設定していない可能性が高いです。グリッドページ設定が有効の場合、AutoSizeをTrueに設定する必要があります。 これで問題が解決しない場合は、DAC、グラフ、ASPXの宣言を確認する必要があります。 – DChhapgar
グリッドの[自動サイズ変更]プロパティを設定すると問題が解決しました。私は他のフィルタリングの問題を修正し、正常に動作しています。助けてくれてありがとう –