表单插件给表体每行赋值的行号问题
1人赞赏了该文章
1,541次浏览
编辑于2016年10月16日 12:41:00
正在做动态表单插件, DynamicObjectCollection objs = this.View.Model.GetEntityDataObject(entry);是我获得的表单表体明细数据。现在给表体明细的每一行赋值。发现一个奇怪的问题,网上没有找到答案。
我通过 foreach (DynamicObject obj in objs)循环每一行,但是赋值语句却是这样的 this.View.Model.SetValue("FPrice", 不含税价, rount);。如果我的用户没有做排序,这种写法好像还是正确的,每一个obj正好从0到最后一行。如果用户单击了排序,那么问题就诡异了。我跟踪了一下 obj["FPrice"]) 和 this.View.Model.GetValue("FPrice", rount);根本就不是同一个值,意味着 this.View.Model里面的行顺序可能和OBJS是排序前的行,而obj取出来的可能是排序后在界面上看到的行。所以想问一下, this.View.Model.SetValue("FPrice", 1.987, rount);这里rount怎么取值,才能保证我赋值到OBJ对应的那一行呢?
int rount = 0;
foreach (DynamicObject obj in objs)
{
this.View.Model.SetValue("FPrice", 1.987,rount);
rount++;
}
网上的例子基本都是这样,可我觉得这样不可靠,赋值的时候,并不能完全保证roung代表的行索引就一定会是obj代表的那一行。
我通过 foreach (DynamicObject obj in objs)循环每一行,但是赋值语句却是这样的 this.View.Model.SetValue("FPrice", 不含税价, rount);。如果我的用户没有做排序,这种写法好像还是正确的,每一个obj正好从0到最后一行。如果用户单击了排序,那么问题就诡异了。我跟踪了一下 obj["FPrice"]) 和 this.View.Model.GetValue("FPrice", rount);根本就不是同一个值,意味着 this.View.Model里面的行顺序可能和OBJS是排序前的行,而obj取出来的可能是排序后在界面上看到的行。所以想问一下, this.View.Model.SetValue("FPrice", 1.987, rount);这里rount怎么取值,才能保证我赋值到OBJ对应的那一行呢?
int rount = 0;
foreach (DynamicObject obj in objs)
{
this.View.Model.SetValue("FPrice", 1.987,rount);
rount++;
}
网上的例子基本都是这样,可我觉得这样不可靠,赋值的时候,并不能完全保证roung代表的行索引就一定会是obj代表的那一行。