ObjectDataSource Update метод с динамическими параметрами - PullRequest
5 голосов
/ 29 сентября 2008

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

| Последовательность | Значение | Налог | Дежурный | Всего |

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

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

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 или где угодно во время выполнения, но я не совсем уверен, сработает ли это.

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

Carlos

1 Ответ

3 голосов
/ 29 сентября 2008

Мне кажется, что вам придется отказаться от использования декларативной модели ObjectDataSource и перейти к настройке источника данных "old-school" и привязать сетку вручную в обратной передаче (или загрузить, в зависимости от случая быть), а затем обрабатывать редактирование / обновление также вручную.

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

...