具有动态参数的ObjectDataSource更新方法
时间:2020-03-06 14:52:10 来源:igfitidea点击:
我有这个DataTable,除了序列号外,它具有一组不同的列。
|顺序|价值|税收|职责|总计|
任意数量的列都应使用唯一的列名。
要显示该表,我需要使用Select方法将ObjectDataSource映射到presenter类。
class Presenter { [DataObjectMethod(DataObjectMethodType.Select)] public DataView GetDutyAndTax() { ... } }
然后,将ObjectDataSource绑定到AutoGenerateColumns设置为true的GridView。序列是数据键。
到目前为止,这适用于选择表。问题出在我需要更新表时。 ObjectDataSource一直困扰我,我想拥有一种更新方法,该方法的参数与表中各列的参数完全相同。
public void EditDutyAndTax(string Value, string Tax, string Duty, string original_Sequence) { ... }
但是我无法创建这样的方法,因为我不知道所需的列集。
我尝试使用带有可变参数列表的方法,但它不想使用它。
public void EditDutyAndTax(params object[] values) { ... }
现在,我的想法是在Presenter中创建一组更新方法,如下所示:
public void EditDutyAndTax(string value1, string original_Sequence) { ... } public void EditDutyAndTax(string value1, string value2, string original_Sequence) { ... } public void EditDutyAndTax(string value1, string value2, string value3, string original_Sequence) { ... } //an so on...
但是我既不认为这会通过代码审查也不会喜欢这个想法。
我的另一个想法是创建一个动态方法,并将它(如果可能)添加到Presenter类或者运行时的任何地方,但是我不确定这是否可行。
因此,如果我们有任何解决方案,请提供帮助。非常感谢!
卡洛斯
解决方案
在我看来,我们将不得不使用ObjectDataSource声明性模型进行报废,并转到数据源的"老式"设置并在回发(或者加载,视情况而定)中手动绑定网格,然后手动进行编辑/更新。
DataSource对象非常特别地说明了如何使用它们,并且如果我们尝试超出范围,则根本无法正常工作。