2016-05-13 11 views
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 

enter image description here

よろしく、 R. Muralidharan

+1

コードをデバッグすると、グリッド用に定義したdatamemberの対応するキャッシュにデータが移入されていますか? はいの場合、ここでの問題はグリッドの自動サイズ変更になります。データを内部で見ることができるように、グリッドの自動サイズをtrueに設定します。 – Hybridzz

+1

カスタムSmartPanel aspxをSalesOrderEntry画面のSmartPanel Add Item SmartPanelと比較することができます。 @Hybridzzが述べたように、あなたはAutoSizeプロパティを設定していない可能性が高いです。グリッドページ設定が有効の場合、AutoSizeをTrueに設定する必要があります。 これで問題が解決しない場合は、DAC、グラフ、ASPXの宣言を確認する必要があります。 – DChhapgar

+0

グリッドの[自動サイズ変更]プロパティを設定すると問題が解決しました。私は他のフィルタリングの問題を修正し、正常に動作しています。助けてくれてありがとう –

答えて

1

あなたはSalesOrderEntry画面の在庫アイテムのスマートパネルを追加し、アウトオブボックスでカスタムスマートパネルのaspxを比較することもできます。 @Hybridzzが述べたように、あなたはAutoSizeプロパティを設定していない可能性が高いです。グリッドページ設定が有効の場合、AutoSizeをTrueに設定する必要があります。

関連する問題