具有动态参数的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对象非常特别地说明了如何使用它们,并且如果我们尝试超出范围,则根本无法正常工作。