ObjectDataSource具有动态参数的Update方法

时间:2008-09-29 10:28:41

标签: c# objectdatasource

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

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

应该接受任意数量的列,并使用唯一的列名称。

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

class Presenter {
    [DataObjectMethod(DataObjectMethodType.Select)]
    public DataView GetDutyAndTax() { ... }
}

然后将ObjectDataSource绑定到GridView,并将AutoGenerateColumns设置为true。序列是数据密钥。

到目前为止,这适用于选择表格。当我需要更新表时问题就出现了。 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类或运行时的任何地方,但我不确定这是否有用。

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

卡洛斯

1 个答案:

答案 0 :(得分:3)

在我看来,您将不得不使用ObjectDataSource声明模型进行报废,并转到数据源&的“old-school”设置。在回发中手动绑定网格(或根据具体情况加载),然后手动处理编辑/更新。

DataSource对象非常特别关于你如何使用它们 - 如果你试图超出界限,就不能正常工作。