0

ASP.NET アプリケーションがあり、あるページには、ObjectDataSource を使用して "Device" という名前の別のクラスにあるメソッドを呼び出すグリッドビューがあります。このクラスは特別なデータテーブルを返します。これは機能しています。

ここで、データを更新するためのメソッドが必要ですが、これにはクラス Device を使用できないため、コード ビハインドからそのグリッドの「RowUpdating」メソッドを使用したいと考えています。このメソッドのコードも書きましたが、ユーザーがグリッドの「更新」ボタンをクリックすると、機能し、メソッドが起動します。

今問題に。私は ObjectDataSource を使用しており、そのグリッドに Update コマンドがあるため、この ObjectDataSource の Update メソッドも指定する必要があり、これがポイントです。その ObjectDataSource からの update メソッドではなく、コード ビハインドから RowUpdating-method を使用したいと考えています。私の現在の解決策は、「return」コマンドを介して戻るクラス「Device」のメソッドであるため、コードビハインドからの RowUpdating が仕事をしています...しかし、これが「唯一の方法」ではありません。

ヘルプとさらなるヒントをいただければ幸いです。ありがとう!

4

1 に答える 1

0

ObjectDataSource を使用する場合は、update メソッドと select メソッドを 1 つのクラスに記述する必要があります。update メソッドと select メソッドを他のオブジェクトに委任するには、その GridView のクラスを直接作成する必要があるかもしれません。

私はそれがあなたに役立つと思います:

[DataObject(true)]
public class SomeService
{
    private Device d;
    private YourUpdaterClass yuc;

    public SomeService()
    {
        this.d = new Device();
        this.yuc = new YourUpdaterClass();
    }

    [DataObjectMethod(DataObjectMethodType.Select, true)]
    public List<YourType> Select()
    {
        return d.YourSelectMethod();
    }

    [DataObjectMethod(DataObjectMethodType.Update, true)]
    public void Update(YourType yt)
    {
        yuc.YourUpdateMethod(yt);
    }
}

そして ObjectDataSource:

<asp:ObjectDataSource 
   ID="ObjectDataSource1"
   runat="server" 
   SelectMethod="Select"
   TypeName="SomeService"
   DataObjectTypeName="YourType"
   UpdateMethod="Update">
</asp:ObjectDataSource>
于 2013-10-11T07:48:36.610 に答える