关于星空列表插件的一个系统缺陷之正解(this.ListModel.GetData()失效问题)原创
金蝶云社区-BobbyLIU
BobbyLIU
11人赞赏了该文章 376次浏览 未经作者许可,禁止转载编辑于2022年11月17日 17:52:48

今天接到一个比较简单的活,在星空列表界面做个按钮功能操作单据及附带的一些业务。

这比起之前做的功能来说属于基础性的开发了。

马上安排代码~

这里只体现要重点将的缺陷处

案例一:

 ListSelectedRowCollection listSelecteds = this.ListView.SelectedRowsInfo;

                if (listSelecteds.Count == 0)

                {

                    this.View.ShowErrMessage("未选择需要修改的列");

                    return;

                }

                else

                {

                    DynamicObjectCollection list = this.ListModel.GetData(listSelecteds);

                    foreach (DynamicObject row in list)//遍历收款单列表选中行数据

                    {

案例二:

ListSelectedRowCollection listSelecteds = this.ListView.SelectedRowsInfo;

                if (listSelecteds.Count == 0)

                {

                    this.View.ShowErrMessage("未选择需要修改的列");

                    return;

                }

                else

                {

                    IEnumerable<string> FIDs = listSelecteds.Select(o => o.PrimaryKeyValue);

                    foreach (string FID in FIDs)

                    {

    

                        FormMetadata formMetadata = MetaDataServiceHelper.Load(this.Context, "SAL_SaleOrder") as FormMetadata;

                                                DynamicObject row = BusinessDataServiceHelper.LoadSingle(this.Context, FID, formMetadata.BusinessInfo.GetDynamicObjectType());

对比两个代码可以看出不同之处。

但是案例一,在执行时在修改查询不通分录的情况下是娶不到list的。这个问题我思考了很久

很纳闷。标准的官方文档都是这样写,怎么就在这里不行了。

主要是之前的代码也是这样写的,还可以用得很好。

后面经过多方资料查阅,修改成了第二个方案:

只在界面取id。    

再通过id去取对应的对象的方式。

完美解决

赞 11