Join 网格中的显示方法在所有行中显示相同的文本
我在表格上有一个非常简单的显示方法来显示给定日期的工作日:Join 网格中的显示方法在所有行中显示相同的文本,join,axapta,sqldatasource,dynamics-ax-2009,Join,Axapta,Sqldatasource,Dynamics Ax 2009,我在表格上有一个非常简单的显示方法来显示给定日期的工作日: display DateDayName day() { WeekDays weekday; ; weekday = dayofwk(this.TransDate); return enum2str(weekday); } 但由于某些原因,当我在特定表单的网格上使用此方法时,显示的文本将使用网格中所有行的第一条记录,并且当选择新行时,所选行将使用正确的文本进行更新,而先前选择的记录将使用新选择的记
display DateDayName day()
{
WeekDays weekday;
;
weekday = dayofwk(this.TransDate);
return enum2str(weekday);
}
但由于某些原因,当我在特定表单的网格上使用此方法时,显示的文本将使用网格中所有行的第一条记录,并且当选择新行时,所选行将使用正确的文本进行更新,而先前选择的记录将使用新选择的记录的值进行更新
可以看到,该数据源链接到另一个数据源,但看起来它已正确设置。我尝试过数据源和链接类型的各种设置,但都没有帮助或改变任何东西我只是在发布后立即找到了答案。我正要尝试将display方法更改为位于forms数据源上,而不是位于表上,这时我发现它已经存在,并且具有相同的名称。这可能导致axapta在选择读取哪个方法时出现问题,因为如果未指定数据源,它是查找显示方法的默认位置。我只是在数据源上更改了方法的名称,一切都很好。当在表单上放置一个display方法时,您会得到这个结果。对于显示方法,它们应该放在表本身上,并且通常应该是根据最佳实践放置此类代码的第一个位置 我认为,它为每个记录显示相同的值的原因是,正在呈现的记录不是该方法用于查找值的记录,而是第一个当前选定的记录。此外,您会看到,如果您更改了所选记录,该值似乎会意外地“更改”。在本例中,当您选择一条新记录时,该方法将以该新记录作为数据源再次运行,并且AX将结果值放入先前选择的记录和新选择的记录中(如果我记得正确的话)
考虑这一点最简单的方法是,表单将具有一定大小的表缓冲区(通常为2+),因此它可以同时显示多个记录的所有信息。但是,调用缓冲区的显示方法一次只能引用一条记录,因此我们需要确定该记录是哪条记录。在表单上,确定传递哪个记录的最直观的方法是当前选定的记录。感谢您的输入。我选择了自己的答案,因为它解决了实际问题,基本上是我不知道其他人在表单上放置了显示方法。不过,你确实提供了一些好的、有价值的信息。