1

私の現在のプロジェクトでは、jQueryカレンダープラグインを使用しています。そのデモを見ることができます

http://www.web-delicious.com/jquery-plugins-demo/wdCalendar/sample.php

問題は、更新ボタンをクリックしてデータを更新しようとすると、値が重複することです。ここでは、更新前と更新後のプロジェクトのスクリーンショットを提供しているので、便利です。

リフレッシュする前に

リフレッシュ後

2番目の画像では、各データが重複して表示されていることがわかります。更新ボタンをクリックするたびに重複データが表示されますが、ページ全体をリロードすると、最初の画像として表示されます。

更新には次のコードを使用しています。更新ボタンでイベントをクリックします

$("#showreflashbtn").click(function (e) {
    $("#gridcontainer").reload();
});

そして、データはデータベースから来ています。問題は、新しいデータが来ているのに、すでにブラウザにあり、クリアされていないデータが重複していることだと思います。

4

4 に答える 4

4

新しいデータを追加する前に、まずカレンダーデータをクリアする必要があります。リロードする前に、次のコードを試してください。

$("#gridcontainer").empty();

wdCalendarプラグインのドキュメントはここにあります:ドキュメント

于 2014-06-24T14:01:55.590 に答える
3

イベントの重複を防ぐために、次のようにします。

jquery.calendar.jsファイルでpopulate()関数に移動します。ajax成功関数に次の行を追加します。

option.eventItems = new Array();

これにより、すべてのイベントが確実に削除され、重複が防止されます。

完全なコード:

$.ajax({
                type: option.method, 
                url: option.url,
                data: param,
                dataType: "json",
                dataFilter: function(data, type) {
                    return data;
                },
                success: function(data) {//function(datastr) {                                  
                    option.eventItems = new Array(); // Without this line there will be duplicates

                    if (data != null && data.error != null) {
                        if (option.onRequestDataError) {
                            option.onRequestDataError(1, data);
                        }
                    }
                    else {
                        // Good response
                        data["start"] = parseDate(data["start"]);
                        data["end"] = parseDate(data["end"]);
                        $.each(data.events, function(index, value) { 
                            value[2] = parseDate(value[2]);
                            value[3] = parseDate(value[3]); 
                        });
                        responseData(data, data.start, data.end);
                        pushER(data.start, data.end);
                    }
                    if (option.onAfterRequestData && $.isFunction(option.onAfterRequestData)) {
                        option.onAfterRequestData(1);
                    }
                    option.isloading = false;
                },
                error: function(data) { 
                    try {                           
                        if (option.onRequestDataError) {
                            option.onRequestDataError(1, data);
                        } else {
                            alert(i18n.xgcalendar.get_data_exception);
                        }
                        if (option.onAfterRequestData && $.isFunction(option.onAfterRequestData)) {
                            option.onAfterRequestData(1);
                        }
                        option.isloading = false;
                    } catch (e) { }
                }
            });

お役に立てば幸いです

于 2015-03-23T10:45:31.693 に答える
2

私はあなたがここで説明したのと同じ問題に遭遇しました。私の問題は、StartTimeによってデータベースの順序からイベントデータを取得する必要があることです。これは、wdcalendarjavascriptコードがイベントを正しくクリアするのに役立ちます。お役に立てば幸いです。

于 2013-09-12T18:48:20.380 に答える
1
$("#showreflashbtn").click(function(e){
                $("#gridcontainer").empty();
                $("#gridcontainer").reload();
                $('.filterevents').removeClass('fcurrent');

            });

これを試してみてください

于 2014-06-25T05:01:07.117 に答える