1

リスト項目を含むグリッドがあります。選択した特定のアイテムを削除するオプションがあります。しかし、私には問題があります。

複数のアイテムがある場合、それらを削除するとすべて消えてしまいます。しかし、アイテムが 1 つ残っていて、それを削除すると、ストアド プロシージャが実行され、すべてが削除されます。しかし、視覚的にリスト項目はまだそこにあります。ただし、ページを更新すると消えてしまいます。

削除後に他のものと同じように消える必要があります。ここには 2 つの機能があります。1 つは、削除と更新です。もう 1 つは更新コードです。

これが私のグリッドです:

$('#viewExpensesGrid').flexigrid({
            url: url,
            dataType: 'json',
            method: 'get',
            colModel: [
            { display: '<input type="ch etc etc other parts of table like id, name etc

これが私の削除です:

function doTheDelete(doIDeleteExpenses) {
        var selectedExpensesList = getSelectedExpenseIDs();
        if (selectedExpensesList.length > 0) {
            $.ajax({
                type: "POST",
                //url: "/Tasks/ViewTasks.aspx/deleteTasksAndLinkedItems",
                url: '<%=ResolveUrl("~/Expenses/ViewExpenses.aspx/deleteSelectedExpense")%>',
                data: "{'DeleteExpenses' : '" + doIDeleteExpenses + "'," + "'ExpID': ['" + selectedExpensesList.join(',') + "']}",
                //dataaaaaa
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (data) {
                    var ss = data.d;
                    if (ss.length > 0) {
                        for (var i = 0; i < ss.length; ++i) {
                            $.noty.consumeAlert({ layout: 'center', type: 'error', dismissQueue: true });
                            alert(ss[i]);
                        }
                    }
                    $("#viewExpensesGrid").flexReload(); //this reloads the grid but doesnt gets rid of the last item.
                },

更新コードは次のとおりです。

$.fn.flexReload = function (p) { // function to reload grid
    return this.each(function () {
        if (this.grid && this.p.url) this.grid.populate();
    });
4

2 に答える 2

1

フレキシグリッドの最新バージョンを使用していますか?

8月にコミットされた可能性のある修正があったようです。

flexReload() の $.ajax キャッシュ修正を参照してください。

于 2012-10-29T17:26:51.980 に答える
0

私はこれが古いスレッドであることを認識していますが、flexigrid が結果をキャッシュし、Ajax 経由でデータを再取得しないというまったく同じ問題に遭遇しました。実装ではまだ完全には解決されていないようです。

私の「ハック」は、呼び出し時に URL をわずかに変更し.flexReload()て、クエリ文字列にランダムな値を追加することです。

        $("#grid").flexOptions({ url: 'server_url?hash=' + Math.random()}).flexReload();

これで問題は解決しました。

于 2015-12-23T22:15:15.523 に答える