如何将ChooseFrom列表值分配给C#中的"编辑文本字段"

2020-09-23 06:22发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

我将分配给我的"编辑文本字段"的选定ChooseFrom列表值遇到问题。

当我从"项目列表"中选择一个ItemCode时,现在我想将ItemName设置为另一个EditText。

我尝试使用下面的代码,但是大多数时候我收到诸如"一般错误"之类的错误消息。

我已附上我的要求的屏幕截图。

项目名称= System.Convert.ToString(oDataTable.GetValue(1,0)); oItem = oForm.Items.Item(" txtITMNM"); oEdit =(((SAPbouiCOM.EditText)(oItem.Specific)); oEdit  .String =项目名称;

 

(16.7 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

我将分配给我的"编辑文本字段"的选定ChooseFrom列表值遇到问题。

当我从"项目列表"中选择一个ItemCode时,现在我想将ItemName设置为另一个EditText。

我尝试使用下面的代码,但是大多数时候我收到诸如"一般错误"之类的错误消息。

我已附上我的要求的屏幕截图。

项目名称= System.Convert.ToString(oDataTable.GetValue(1,0)); oItem = oForm.Items.Item(" txtITMNM"); oEdit =(((SAPbouiCOM.EditText)(oItem.Specific)); oEdit  .String =项目名称;

 

(16.7 kB)
付费偷看设置
发送
3条回答
骆驼绵羊
1楼 · 2020-09-23 06:51.采纳回答

代替设置EditText,尝试使用DBDataSource

例如,我过去所做的一些selectfromlist没问题,请不要忘记将其替换为表名和字段名。

 DbDataSource myDBDataSource = form.DataSources.DBDataSources.Item(" MYTABLENAME");
  
                 var iChoose =(ISBOChooseFromListEventArg)pVal;
                 DataTable dataTable = iChoose.SelectedObjects;

                 如果(dataTable == null || dataTable.Rows.Count == 0)
                 {
                     返回;
                 }

                 字符串itemCode = dataTable.GetValue(" ItemCode",0).ToString();
                 字符串itemName = dataTable.GetValue(" ItemName",0).ToString();

                 myDBDataSource.SetValue(" ITEMCODEFIELD",0,itemCode);
                 myDBDataSource.SetValue(" ITEMNAMEFIELD",0,itemName);
           
闻人可可
2楼-- · 2020-09-23 06:55

HI 罗马萨维里耶夫,

感谢您及时重播,

我会检查并告知您。

谢谢

Chenna

haha101010
3楼-- · 2020-09-23 07:03

当选择器窗体打开(ChooseFromeListEvent &&!BeforeAction仍然打开)时,出色的SAP有时不允许您将值写入字段。 对于最简单的情况,下面是代码。 它订阅选择器关闭,并记住需要完成的操作。 如果您使用事件过滤器,请不要忘记为选择器表单类型添加事件过滤器。

 class PickerCallback 
 {
 私人应用SboApplication {get; 组;  }
 私有字符串PickerFormID { 组;  }
 私人表格ParentForm {get; 组;  }
 私人Action  SelectAction {get; 组;  }
 私人TSelected选择{ 组;  }
 公共PickerCallback(
 应用程序appObject,
 表单选择器
 表格parentForm,
 TSelected已选择,
 动作 selectAction)
 {
 SboApplication = appObject;
 SboApplication.ItemEvent + = InvokeSelectAction;
 PickerFormID = pickerForm.UniqueID;
 ParentForm = parentForm;
 SelectAction = selectAction;
 已选择=已选择;
 }


 私人无效InvokeSelectAction(字符串FormUID,ref ItemEvent pVal,布尔泡泡事件)
 {
 如果(FormUID == PickerFormID &&
 pVal.EventType == BoEventTypes.et_FORM_CLOSE &&
 !pVal.BeforeAction &&
 pVal.ActionSuccess)
 {
 尝试
 {
 SelectAction?.Invoke(ParentForm,Selected);
 }
 抓(例外)
 {
 ...
 }
 最后
 {
 SboApplication.ItemEvent-= InvokeSelectAction; //从发票清单中删除自己
 SboApplication = null; //可能没有必要。
 ParentForm = null;
 SelectAction = null;
 }
 }
 BubbleEvent = true;
 }
 }


 用:

 ChooseFromListEvent eventDetails = ...; //!BeforeAction
 选定的数据表= eventDetails.SelectedObjects;
 if(selected!= null && selected.Rows.Count> 0)
 {
 var selectedPair = new KeyValuePair <字符串,字符串>(
 selected.GetValue(" AbsID",0).ToString(),
 selected.GetValue(" Number",0).ToString());


 新的PickerCallback >(
 应用,
 Application.Forms.ActiveForm,//选择器窗体
 documentForm,//主窗体
 对,
 MyCflAction);
 }

 私有静态无效MyCflAction(表单documentForm,KeyValuePair <字符串,字符串>对)
 {
         项目formItems = form.Items;
         EditText keyField = ...;
 EditText numField = ...;
 keyField.Value = pair.Key;
 numField.Value = pair.Value;
 }

 

一周热门 更多>