2008-09-29 3 views
5

У меня есть этот DataTable, который имеет различный набор столбцов, за исключением порядкового номера.Метод ObjectDataSource Update с динамическими параметрами

| Последовательность | Значение | Налоги | Обязанности | Всего |

Любое количество столбцов должно приниматься с уникальными именами столбцов.

Чтобы отобразить эту таблицу, мне нужно использовать объект ObjectDataSource, сопоставленный классу презентатора с помощью метода Select.

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

The ObjectDataSource затем привязывается к GridView с AutoGenerateColumns значение ИСТИНА. Последовательность - это ключ данных.

До сих пор это работает для выбора таблицы. Проблема возникает, когда мне нужно обновить таблицу. 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 или где бы то ни было во время выполнения, но я не уверен, что это сработает.

Итак, если у вас есть какие-либо решения, пожалуйста, помогите. Спасибо!

Carlos

ответ

3

Это звучит для меня, как вы собираетесь иметь в металлолом с помощью декларативной модели ObjectDataSource, и перейдите к настройке «старой школы» из источника данных & привязки сетки вручную в постбэка (или загрузка, в зависимости от ситуации), а затем обрабатывать вручную редактирование и обновление.

Объекты DataSource очень особенно о том, как вы их используете - и не работают хорошо, если вообще вы пытаетесь выйти за пределы линий.