如何在SAP B1中获取Gridview复选框选中的行值

2020-09-27 13:47发布

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

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


嗨,

我创建了一个具有自定义网格视图的表单,该表单将数据动态绑定到网格中。 现在,我试图将复选框选中的行值的详细信息放入网格视图。

这意味着,在单击"创建SalesOrder"按钮时,我要获取复选框已选中项目(ClgCode 1,9)记录的详细信息。

您能不能请别人向我建议示例代码,以便在网格视图中选中复选框行详细信息。

这是我创建网格视图的代码。

公共无效GridSample()
         {
             SetApplication();
            //LoadFromXML(" TabOrder.srf")
             CreateForm();
            //通过使用表单的UID获取添加的表单对象
             oForm = SBO_Application.Forms.Item(" frmGrid");
            //显示表格
             oForm.Visible = true;
         }

         私人无效CreateForm()
         {

             SAPbouiCOM.FormCreationParams CP = null;
             SAPbouiCOM.StaticText oStat = null;
             SAPbouiCOM.Button oBtn = null;
             SAPbouiCOM.OptionBtn oOpt = null;
             SAPbouiCOM.CheckBox chkbox = null;
             SAPbouiCOM.CheckBoxColumn chkboxclm = null;
            //SAPbouiCOM.Item oItemBP = null,oItem = null;
             CP =(((SAPbouiCOM.FormCreationParams)(SBO_Application.CreateObject(SAPbouiCOM.BoCreatableObjectType.cot_FormCreationParams))));;
             CP.BorderStyle = SAPbouiCOM.BoFormBorderStyle.fbs_Sizable;
             CP.FormType ="样本";
             CP.UniqueID =" frmGrid";

             oForm = SBO_Application.Forms.AddEx(CP);
            //设置表单的宽度和高度
             oForm.Left = 800;
             oForm.Top = 140;
             oForm.Height = 450;
             oForm.Width = 770;
             oForm.Title =" Formpak生产样品";
            //将网格项添加到表单
             oItem = oForm.Items.Add(" SalOrdGrid",SAPbouiCOM.BoFormItemTypes.it_GRID);
            //设置网格尺寸和位置
             oItem.Left = 20;
             oItem.Top = 40;
             oItem.Width = 720;
             oItem.Height = 350;

            //设置网格数据
             oGrid =(((SAPbouiCOM.Grid)(oItem.Specific));
             oForm.DataSources.DataTables.Add(" SalesDataTable");
             oForm.DataSources.DataTables.Item(0).ExecuteQuery(" SELECT ClgCode,CardCode作为'#Check items',CardCode,Notes作为'Subject',U_WID_Project作为'Project',U_WID_fptaskcode作为'Task Code',U_WID_ItemCode作为'ItemCode  ',U_WID_ItemName为'ItemName',U_WID_Qty为'Qty',U_WID_MofUnit为'M of Unit',U_WID_packqty为'No of Packagage',U_WID_dosage as'Dosage'FROM OCLG ORDER BY ClgCode ASC"");
             oGrid.DataTable = oForm.DataSources.DataTables.Item(" SalesDataTable");

            //设置列大小
             oGrid.Columns.Item(0).Editable = false;
             oGrid.Columns.Item(1).Type = SAPbouiCOM.BoGridColumnType.gct_CheckBox;



             oItem = oForm.Items.Add(" 2",SAPbouiCOM.BoFormItemTypes.it_BUTTON);
             oItem.Left = 20;
             oItem.Top = 390;
            //oItem.Width = 90;
             oItem.AffectsFormMode = false;
             oBtn =(((SAPbouiCOM.Button)(oItem.Specific)));
             oBtn.Caption ="取消";

             oItem = oForm.Items.Add(" btnCreOrd",SAPbouiCOM.BoFormItemTypes.it_BUTTON);
             oItem.Left = 630;
             oItem.Top = 390;
             oItem.Width = 90;
             oItem.AffectsFormMode = false;
             oBtn =(((SAPbouiCOM.Button)(oItem.Specific)));
             oBtn.Caption ="创建SalesOrder";
         } 

(28.0 kB)

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

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


嗨,

我创建了一个具有自定义网格视图的表单,该表单将数据动态绑定到网格中。 现在,我试图将复选框选中的行值的详细信息放入网格视图。

这意味着,在单击"创建SalesOrder"按钮时,我要获取复选框已选中项目(ClgCode 1,9)记录的详细信息。

您能不能请别人向我建议示例代码,以便在网格视图中选中复选框行详细信息。

这是我创建网格视图的代码。

公共无效GridSample()
         {
             SetApplication();
            //LoadFromXML(" TabOrder.srf")
             CreateForm();
            //通过使用表单的UID获取添加的表单对象
             oForm = SBO_Application.Forms.Item(" frmGrid");
            //显示表格
             oForm.Visible = true;
         }

         私人无效CreateForm()
         {

             SAPbouiCOM.FormCreationParams CP = null;
             SAPbouiCOM.StaticText oStat = null;
             SAPbouiCOM.Button oBtn = null;
             SAPbouiCOM.OptionBtn oOpt = null;
             SAPbouiCOM.CheckBox chkbox = null;
             SAPbouiCOM.CheckBoxColumn chkboxclm = null;
            //SAPbouiCOM.Item oItemBP = null,oItem = null;
             CP =(((SAPbouiCOM.FormCreationParams)(SBO_Application.CreateObject(SAPbouiCOM.BoCreatableObjectType.cot_FormCreationParams))));;
             CP.BorderStyle = SAPbouiCOM.BoFormBorderStyle.fbs_Sizable;
             CP.FormType ="样本";
             CP.UniqueID =" frmGrid";

             oForm = SBO_Application.Forms.AddEx(CP);
            //设置表单的宽度和高度
             oForm.Left = 800;
             oForm.Top = 140;
             oForm.Height = 450;
             oForm.Width = 770;
             oForm.Title =" Formpak生产样品";
            //将网格项添加到表单
             oItem = oForm.Items.Add(" SalOrdGrid",SAPbouiCOM.BoFormItemTypes.it_GRID);
            //设置网格尺寸和位置
             oItem.Left = 20;
             oItem.Top = 40;
             oItem.Width = 720;
             oItem.Height = 350;

            //设置网格数据
             oGrid =(((SAPbouiCOM.Grid)(oItem.Specific));
             oForm.DataSources.DataTables.Add(" SalesDataTable");
             oForm.DataSources.DataTables.Item(0).ExecuteQuery(" SELECT ClgCode,CardCode作为'#Check items',CardCode,Notes作为'Subject',U_WID_Project作为'Project',U_WID_fptaskcode作为'Task Code',U_WID_ItemCode作为'ItemCode  ',U_WID_ItemName为'ItemName',U_WID_Qty为'Qty',U_WID_MofUnit为'M of Unit',U_WID_packqty为'No of Packagage',U_WID_dosage as'Dosage'FROM OCLG ORDER BY ClgCode ASC"");
             oGrid.DataTable = oForm.DataSources.DataTables.Item(" SalesDataTable");

            //设置列大小
             oGrid.Columns.Item(0).Editable = false;
             oGrid.Columns.Item(1).Type = SAPbouiCOM.BoGridColumnType.gct_CheckBox;



             oItem = oForm.Items.Add(" 2",SAPbouiCOM.BoFormItemTypes.it_BUTTON);
             oItem.Left = 20;
             oItem.Top = 390;
            //oItem.Width = 90;
             oItem.AffectsFormMode = false;
             oBtn =(((SAPbouiCOM.Button)(oItem.Specific)));
             oBtn.Caption ="取消";

             oItem = oForm.Items.Add(" btnCreOrd",SAPbouiCOM.BoFormItemTypes.it_BUTTON);
             oItem.Left = 630;
             oItem.Top = 390;
             oItem.Width = 90;
             oItem.AffectsFormMode = false;
             oBtn =(((SAPbouiCOM.Button)(oItem.Specific)));
             oBtn.Caption ="创建SalesOrder";
         } 

(28.0 kB)
付费偷看设置
发送
3条回答
吹牛啤
1楼 · 2020-09-27 14:25.采纳回答

嗨,

如果它是使用查询填充的网格,则应使用以下内容:

 for(int k = 0; k <= oGrid.Rows.Count-1; k ++)
 {
     字符串IsSelected = oGrid.DataTable.GetValue(" ColumnName",k).ToString();
     如果(IsSelected ==" Y")
     {
//进行操作。
     }
 }
 

亲切的问候,

ANKIT CHAUHAN

SAP SME支持

哎,真难
2楼-- · 2020-09-27 14:48

Hi Chenna,

您要获取行详细信息还是要选中所有复选框? 要获取行详细信息,Ankit的第一个答案应该会帮助您

暮风yp
3楼-- · 2020-09-27 14:51

如果它是矩阵,则应使用以下方法:

 for(int i = 1; i <= oMatrix.RowCount; i ++)
 {
     SAPbouiCOM.CheckBox oChkSelect =(SAPbouiCOM.CheckBox)oMatrix.Columns.Item(" colSelect")。Cells.Item(i).Specific;
     如果(oChkSelect.Checked == true)
     {
//进行操作。
     }
 }
 

亲切的问候,

ANKIT CHAUHAN

SAP SME支持

一周热门 更多>