0

編集コマンド ボタンを使用してユーザーに表示される ASPxGridView があります。ユーザーが編集コマンド ボタンをクリックすると、選択した行が編集フォームに変わります。

編集フォームには、クリックすると JavaScript を介してカスタム コールバックを実行するコントロールがあり、カスタム コールバック ハンドラは選択した行の値を変更し、UpdateEdit() を呼び出して変更された値を保存し、通常のグリッド ビュー レイアウトに戻ります。 .

ただし、新しい値が基になるデータソースに保存されることはありません。実際、DataSourceControl の ExecuteUpdate メソッドをデバッグすると、oldValues コレクションに更新された値が表示され、values コレクションには元の値が含まれます。

editform のコントロールから呼び出される JavaScript:

javascript:grid.PerformCallback("CloseOrder");

サーバー上で実行されるカスタム コールバック ハンドラ:

protected void gdOrders_CustomCallback(object sender, ASPxGridViewCustomCallbackEventArgs e) {
    if (e.Parameters == "CloseOrder") {
        var row = gdOrders.GetDataRow(gdOrders.EditingRowVisibleIndex);
        row["Status"] = 5;
        gdOrders.UpdateEdit();
    }
}
4

1 に答える 1

1

次の解決策が機能することがわかりました。それが正しい方法かどうかはわかりませんが、うまくいきます。

protected void gdOrders_CustomCallback(object sender, ASPxGridViewCustomCallbackEventArgs e) {
    if (e.Parameters == "CloseOrder") {                
        gdOrders.RowUpdating += (s, e1) => { e1.NewValues["Status"] = 5; };
        gdOrders.UpdateEdit();
    }
}
于 2011-03-08T18:41:06.827 に答える