0

私のプロジェクトでは、Setinterval を使用して、Excel シートのデータベースへのインポート ステータスを表示しています。つまり、Excelsheet に 100 レコードが含まれている場合、ステータス メッセージは、Row 1 0f 100 Rows Inserted Row 2 of 100 Rows Inserted..

ただし、行に空の値が含まれている場合は、エラーの詳細を取得して、それもステータス メッセージに追加する必要があります。したがって、いくつかの問題で機能します。

私のjavascript関数は次のとおりです。

 function ImportFormSuccess(taskId) {
        endform();
    Tid = taskId;

            try {
                intervalId = setInterval(function () {
                    $.ajax(
                    {
                        type: "POST",
                        url: rootDir + "Import/Progress",
                        data: { id: Tid },
                        success: function (data) {

                            if (data.split(',').length > 1) {
                                ErrorMessage = ErrorMessage + data.split(',')[1] + "<br/>";
                                updateMonitor();
                            }
                            else {
                                Message = data;
                                updateStatus();
                            }
                        }
                    });
                }, 100);

            }
            catch (err) {
                txt = "Error Description" + err.Message + "</br>";
                txt += "Click Ok to Continue. . .";
                alert(txt);
            }

        function updateMonitor() {
            $('#monitors').attr("class", "");
            $("#monitors").html(Message + "<br/>" + ErrorMessage);
        }

        function updateStatus() {
            $('#status').attr("class", "");
            $("#status").html(Message);

        }

ビュー コードは次のとおりです。

<div id="monitors" style="padding: 2px;width:500px;height:150px;overflow:auto;border:1px solid;></div>

プロジェクトを実行してインポート手段を開始すると、次のように表示されます。

Row 5 Insert Failed. Row Contains Empty Value
Row 5 Insert Failed. Row Contains Empty Value
Row 5 Insert Failed. Row Contains Empty Value
Row 5 Insert Failed. Row Contains Empty Value
Row 7 Insert Failed. Row Contains Empty Value
Row 7 Insert Failed. Row Contains Empty Value
Row 7 Insert Failed. Row Contains Empty Value
Row 7 Insert Failed. Row Contains Empty Value
Row 10 Insert Failed. Row Contains Empty Value
Row 10 Insert Failed. Row Contains Empty Value
Row 10 Insert Failed. Row Contains Empty Value
Row 10 Insert Failed. Row Contains Empty Value
Row 15 Insert Failed. Row Contains Empty Value
Row 15 Insert Failed. Row Contains Empty Value
Row 15 Insert Failed. Row Contains Empty Value

しかし、一度だけ印刷する必要があります..つまり、

Row 5 Insert Failed. Row Contains Empty Value
Row 7 Insert Failed. Row Contains Empty Value
Row 10 Insert Failed. Row Contains Empty Value
Row 15 Insert Failed. Row Contains Empty Value

助けて?

4

3 に答える 3

1
globalVar = "";

Message = data;
                         var rowVal = data.match(/((-?\d+))/)[1];

                         if(globalVar == "")
                         {
                             globalVar = rowVal;
                             updateStatus();
                         }
                         else 
                         {
                             if(globalVar != rowVal)
                             {
                                 updateStatus();
                             }
                         }

このようにしてみてください

于 2013-05-28T12:27:01.387 に答える
0

最後に、この問題を修正しました。

match 関数を使用して、エラーメッセージが既に存在するかどうかを確認しますか?

 if (data.split(',').length > 1) {
     if (!ErrorMessage.match(data.split(',')[1])) {
           $("#monitors").show();
           ErrorMessage = ErrorMessage + data.split(',')[1] + "<br/>";
           updateMonitor();
           }
     }

私の質問のために私を助けてくれたすべての人に感謝します.. @Anna.P、@TallMaris、@VitorCanovaに特別な感謝

于 2013-05-29T08:35:37.967 に答える
0

コメントに続いて、私は次のようなことを試みます:

function ImportFormSuccess(taskId) {
    endform();
    Tid = taskId;

    try {
        callServer();
    }
    catch (err) {
        // ...snip...
    }
}

function callServer() {
    $.ajax({
        type: "POST",
        url: rootDir + "Import/Progress",
        data: { id: Tid },
        success: function (data) {
            // your code here
        },
        complete: function () {
            // if not 100% (or something similar)
            setTimeout(function () { callServer(); }, 100)
        }
    });
}
于 2013-05-28T12:48:28.753 に答える