我有这个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类或运行时的任何地方,但我不确定这是否有用。
所以,如果你们有任何解决方案,请帮忙。非常感谢!
卡洛斯
答案 0 :(得分:3)
在我看来,您将不得不使用ObjectDataSource声明模型进行报废,并转到数据源&的“old-school”设置。在回发中手动绑定网格(或根据具体情况加载),然后手动处理编辑/更新。
DataSource对象非常特别关于你如何使用它们 - 如果你试图超出界限,就不能正常工作。