ObjectDataSource具有动态参数的Update方法

5 c# objectdatasource

我有这个DataTable,除了序列号之外,它有一组不同的列.

| 序列| 价值| 税| 职责| 总计|

应使用唯一列名接受任意数量的列.

要显示该表,我需要使用一个ObjectDataSource,使用Select方法映射到presenter类.

class Presenter {
    [DataObjectMethod(DataObjectMethodType.Select)]
    public DataView GetDutyAndTax() { ... }
}
Run Code Online (Sandbox Code Playgroud)

然后将ObjectDataSource绑定到GridView,并将AutoGenerateColumns设置为true.Sequence是数据键.

到目前为止,这适用于选择表格.当我需要更新表时问题就出现了.ObjectDataSource一直唠叨我有一个更新方法,其参数与表中列的参数完全相同.

public void EditDutyAndTax(string Value, string Tax, string Duty, string original_Sequence) { ... }
Run Code Online (Sandbox Code Playgroud)

但我无法创建这样的方法,因为我不知道所需的列集.

我尝试使用带有可变参数列表的方法,但它不想使用它.

public void EditDutyAndTax(params object[] values) { ... }
Run Code Online (Sandbox Code Playgroud)

我现在想的是在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...
Run Code Online (Sandbox Code Playgroud)

但我认为这不会通过代码审查,也不会像想法一样.

我的另一个想法是创建一个动态方法并将其(如果可能)附加到Presenter类或运行时的任何位置,但我不确定这是否有效.

所以,如果你们有任何解决方案,请帮忙.非常感谢!

卡洛斯

Gre*_*man 3

在我看来,您将不得不放弃使用 ObjectDataSource 声明性模型,并转到数据源的“老式”设置并在回发中手动绑定网格(或加载,视情况而定),然后手动处理编辑/更新。

DataSource 对象对于如何使用它们非常有讲究 - 如果您尝试超出界限,则无法很好地工作(如果有的话)。