LightSwitch刷新JScript表而不是追加行

时间:2014-07-18 03:46:47

标签: lightswitch-2013

VS2013 Lightswitch。 JScript调用WepAPI来获取一组与日期相关的数据。 JScript创建表并用数据填充它。

更改日期控件(未显示)会导致对Web API进行新调用,然后将此数据附加到现有数据。我试图覆盖数据不附加它。 假设这个代码(基本上是复制的)是正确的方法,那么我需要在写入行之前清除表。 如果我完全以错误的方式做这件事,我很乐意改变技术。这是我的第一个LightSwitch项目。

function generateList(element, currentItem) {
//debugger; 
//var readingListApi = "../Controllers/TTReading?id=" + _contentListItem.screen.Installation1.id + "&startDate=" + _startListDate + "&endDate=" + _endListDate;
var readingListApi = "../Controllers/TTReading?id=" + currentItem.screen.Installation1.id + "&startDate=" + _startListDate + "&endDate=" + _endListDate;
var myTable = $('<table class="ui-responsive table-stroke" data-role="table" />');
var myHeader = $('<thead><tr><th>Volume</th><th>Flow</th><th>Read Date</th></tr></thead>');
var myBody = $('<tbody/>');
myTable.appendTo($(element));

//myHeader.appendTo($(myTable));
//myBody.appendTo($(myTable));
$.getJSON(readingListApi,
    function(data) {
        //var items = [];
        //debugger; 
        if (data.length > 0 && data.length<1000000) {

            $("#myTable tr").remove();
            myHeader.appendTo($(myTable));
            myBody.appendTo($(myTable));
            $.each(data, function (key, val) {

                var myRow = $("<tr/>");
                $("<td/>").text(val.volume).appendTo($(myRow));
                $("<td/>").text(val.flow).appendTo($(myRow));
                $("<td/>").text(val.read_date_part).appendTo($(myRow));

                myRow.appendTo($(myTable));
            });
            // var itemLength = items.length;
        } else if (data.length == 0) {
            var myEmptyRow = $("<tr/>");
            $("<td/>").text("Empty Period").appendTo($(myEmptyRow));
            myEmptyRow.appendTo($(myTable));
        } else {
            var myTooMuchDataRow = $("<tr/>");
            $("<td/>").text("Too Much Data. Reduce Date Range").appendTo($(myTooMuchDataRow));
            myTooMuchDataRow.appendTo($(myTable));
        }
    });

};

1 个答案:

答案 0 :(得分:0)

在谷歌的帮助下解决了这个问题。 用Firebug证明它每次都在写一个新表。因此,解决方案是给表一个id,然后说readTable然后

var tbl = document.getElementById("readTable");
    if (tbl) tbl.parentNode.removeChild(tbl);

在追加逻辑之前。