5

シーケンス番号を除いてさまざまな列のセットを持つこのDataTableがあります。

| シーケンス| 値| 税金| 義務| 合計|

任意の数の列を一意の列名で受け入れる必要があります。

そのテーブルを表示するには、SelectメソッドでプレゼンタークラスにマップされたObjectDataSourceを使用する必要があります。

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

次に、ObjectDataSourceは、AutoGenerateColumnsがtrueに設定されたGridViewにバインドされます。シーケンスはデータキーです。

これまでのところ、それはテーブルを選択するために機能します。テーブルを更新する必要があるときに問題が発生します。ObjectDataSourceは、テーブルの列のパラメーターとまったく同じパラメーターを持つupdateメソッドを使用するように私を悩ませ続けます。

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...

しかし、私はそれがコードレビューを通過することも、アイデアが好きでもないと思います。

私が持っているもう1つのアイデアは、動的メソッドを作成し、それを(可能であれば)Presenterクラスまたは実行時の任意の場所にアタッチすることですが、それが機能するかどうかはわかりません。

だからあなたたちが何か解決策を持っているなら、助けてください。本当にありがとう!

カルロス

4

1 に答える 1

3

ObjectDataSource 宣言モデルを使用して破棄し、データソースの「昔ながらの」設定に移動して、ポストバックで手動でグリッドをバインドする必要があるように思えます (場合によってはロードします)。編集/更新も手動で処理します。

DataSource オブジェクトは、その使用方法に非常にこだわっています。境界線の外に出ようとすると、まったく機能しません。

于 2008-09-29T13:45:36.710 に答える