C# 二次开发单据按钮 获取表体或者表头信息

2019-12-31 14:51:22 人评论 次浏览 分类:U8二次开发

转载:http://u8dev.yonyou.com/blog/b1987.aspx
利用C# 二次开发单据按钮最大的难点应该就是对象无法转换了,有次反编译查看了VB.NET开发的按钮代码,发现了一种方法可以获取表体、表头的数据。这种方法应该是利用了.net平台的反射技术了

首先我们除了U8的一些必要的dll文件外,还需要引入Microsoft.VisualBasic这个动态链接库。

写代码前还需要引用一下  using Microsoft.VisualBasic.CompilerServices;

可能比较繁琐,但至少是一种方式了,大致的意思就是获取对象objVoucher的数据或者函数,然后new object[]{} 里放入的是函数的参数



//获取表体行数

int BodyRows = Convert.ToInt32(NewLateBinding.LateGet(objVoucher, null, "BodyRows", new object[] { }, null, null, null));

//获取第一行存货编码

string cinvcode = Convert.ToString(NewLateBinding.LateGet(objVoucher, null, "bodytext", new object[] { 1, "cinvcode" }, null, null, null));

//获取表头客户编码

string cCusCode = Convert.ToString(NewLateBinding.LateGet(objVoucher, null, "headertext", new object[] { "cCusCode" }, null, null, null));

//设置表体第一行的自定义项13

NewLateBinding.LateSet(objVoucher, null, "bodytext", new object[] {  1, "cdefine33", cCusCode }, null, null);

//调用控件函数

NewLateBinding.LateCall(objVoucher,*******************************
获取objLogin对象中数据库的连接信息:Convert.ToString(NewLateBinding.LateGet(objLogin, null, "UFDataConnstringForNet", new object[0], null, null, null));
//获取单据列表选中行,如果要全部行,将true改为false IXMLDOMDocument2 dombody = (IXMLDOMDocument2)NewLateBinding.LateGet(objVoucher, null, "GetListDom", new object[] { true }, null, null, null); IXMLDOMNode dombodynode = dombody.selectSingleNode("//rs:data");
//调用函数修改第一行含税单价 NewLateBinding.LateCall(objVoucher, null, "SimulateInput", new object[] { 1, 1, "itaxprice", 1111, 0 }, null, null, null, true);

上一篇:用友U8登录控件的使用

下一篇:没有了

相关技术

    暂无相关的资讯...