点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我正在使用Business One 9.2 PL03的C#UI和DI API并自定义用户定义的文档(UDT文档+ UDT文档行-> UDO-> UDO表单)。 我将ChooseFromList添加到B1 Studio中的矩阵列,该列按预期工作,但是我还想添加两个条件来过滤显示的行。 如果我分别添加它们,它们会起作用,但是如果我一次添加它们,则不会有任何结果,尽管我在SQL Studio中可以看到该表包含符合条件的行。
此代码添加了条件:
私有无效OnActionTargetPurchaseOrderChooseFromListBefore(ChooseFromListEvent cflEvent) { 尝试 { oForm.Freeze(true); 如果(cflEvent.ChooseFromListUID.Equals(" ...")) { 字符串cflFormUID = cflEvent.FormUID; ChooseFromList cfl = oForm.ChooseFromLists.Item(" ..."); //清除 条件conds = cfl.GetConditions(); //静态类变量,在表单加载时设置一次,始终继续为空 conds.LoadFromXML(PurchaseOrderChooseFromListDefaultConfitionsAsXml); cfl.SetConditions(conds); = cfl.GetConditions()。GetAsXML();之前的字符串; //用于调试 SBOTools.ChooseFromListAddCondition(oForm," .. CFL"," DocStatus",BoConditionOperation.co_NOT_EQUAL," C"); 如果(cflEvent.Row> -1) { Matrix oMatrix =(Matrix)oForm.Items.Item(" ...")。Specific; oMatrix.FlushToDataSource(); DBDataSource oDBDataSource = oForm.DataSources.DBDataSources.Item(" ..."); 字符串cardCode = oDBDataSource.GetValue(" .. CardCode Column",cflEvent.Row-1).Trim(); 如果(!""。Equals(cardCode)) { SBOTools.ChooseFromListAddCondition(oForm," .. CFL"," CardCode",BoConditionOperation.co_EQUAL,cardCode); } } = cfl.GetConditions()。GetAsXML();之后的字符串; //用于调试 } } 捕获(异常e) { Logger.TraceException(e); } 最后 { 如果(oForm!= null) oForm.Freeze(false); } }
ChoiceFromListAddCondition方法:
公共静态void ChooseFromListAddCondition(表格oForm,字符串cflID,字符串别名,BoConditionOperation操作,字符串conditionVal) { ChooseFromList oCfl = oForm.ChooseFromLists.Item(cflID); var条件= oCfl.GetConditions(); var cond =条件。Add(); cond.Alias =别名; cond.Operation =操作; cond.CondVal = conditionVal; oCfl.SetConditions(conditions); }
看一下XML,我可以看到在添加之前,条件始终为空,而在两个条件都添加之后。 问题在于"从列表中选择"根本不包含行。 如果仅添加DocStatus或CardCode条件,则列表包含结果。
"从列表中选择"定义:
... ....
嗨,嗨
您缺少cond.Relationship属性,无法添加多个条件
以下摘录了2个条件:
关于
Edy
谢谢!
一周热门 更多>