在 Javascript 中无循环地将行附加到现有的 gridview
Appending rows to existing gridview without loop in Javascript
我在 Javascript 中有一个函数可以将新行附加到现有的 GridView。
function OnSuccess(response) {
var xmlDoc = $.parseXML(response.d);
var xml = $(xmlDoc);
var customers = xml.find("ResultTable");
$("[id$=grd] .loader").remove();
customers.each(function () {
var customer = $(this);
var row = $("[id$=grd] tr").eq(1).clone(true);
$(".groupname", row).html(customer.find("GroupName").text());
$(".fullfundname", row).html(customer.find("FullFundName").text());
$(".datafieldname", row).html(customer.find("DataFieldName").text());
$(".comparisonresult", row).html(customer.find("ComparisonResult").text());
$("[id$=grd]").append(row);
});
}
这按预期工作,但速度很慢。调用此函数时,每次将 1000 条记录追加到现有网格中。
任何提高性能的建议,比如我们可以单次分配整个 xml。注意,我的列名是固定的
我试着给你解决方案,但我没有测试数据。希望这个工作。
jQuery.fn.outerHTML = function (s) {
return s ?
this.before(s).remove() :
jQuery("<p>").append(this.eq(0).clone()).html();
};
function OnSuccess(response) {
var xmlDoc = $.parseXML(response.d);
var xml = $(xmlDoc);
var customers = xml.find("ResultTable");
$("[id$=grd] .loader").remove();
var template = $("[id$=grd] tr").eq(1).clone(true);
template.find(".groupname").text("@@GROUPNAME");
template.find(".fullfundname").text("@@FULLFUNDNAME");
template.find(".datafieldname").text("@@DATAFIELDNAME");
template.find(".comparisonresult").text("@@COMPARISONRESULT");
template = template.outerHTML();
let newRows = "";
customers.each(function () {
var customer = $(this);
let row = template;
row = row.replace("@@GROUPNAME", customer.find("GroupName").text());
.replace("@@FULLFUNDNAME", customer.find("FullFundName").text());
.replace("@@DATAFIELDNAME", customer.find("DataFieldName").text());
.replace("@@COMPARISONRESULT", customer.find("ComparisonResult").text());
newRows += row;
});
$("[id$=grd]").html($("[id$=grd]").html() + newRows);
}
我在 Javascript 中有一个函数可以将新行附加到现有的 GridView。
function OnSuccess(response) {
var xmlDoc = $.parseXML(response.d);
var xml = $(xmlDoc);
var customers = xml.find("ResultTable");
$("[id$=grd] .loader").remove();
customers.each(function () {
var customer = $(this);
var row = $("[id$=grd] tr").eq(1).clone(true);
$(".groupname", row).html(customer.find("GroupName").text());
$(".fullfundname", row).html(customer.find("FullFundName").text());
$(".datafieldname", row).html(customer.find("DataFieldName").text());
$(".comparisonresult", row).html(customer.find("ComparisonResult").text());
$("[id$=grd]").append(row);
});
}
这按预期工作,但速度很慢。调用此函数时,每次将 1000 条记录追加到现有网格中。
任何提高性能的建议,比如我们可以单次分配整个 xml。注意,我的列名是固定的
我试着给你解决方案,但我没有测试数据。希望这个工作。
jQuery.fn.outerHTML = function (s) {
return s ?
this.before(s).remove() :
jQuery("<p>").append(this.eq(0).clone()).html();
};
function OnSuccess(response) {
var xmlDoc = $.parseXML(response.d);
var xml = $(xmlDoc);
var customers = xml.find("ResultTable");
$("[id$=grd] .loader").remove();
var template = $("[id$=grd] tr").eq(1).clone(true);
template.find(".groupname").text("@@GROUPNAME");
template.find(".fullfundname").text("@@FULLFUNDNAME");
template.find(".datafieldname").text("@@DATAFIELDNAME");
template.find(".comparisonresult").text("@@COMPARISONRESULT");
template = template.outerHTML();
let newRows = "";
customers.each(function () {
var customer = $(this);
let row = template;
row = row.replace("@@GROUPNAME", customer.find("GroupName").text());
.replace("@@FULLFUNDNAME", customer.find("FullFundName").text());
.replace("@@DATAFIELDNAME", customer.find("DataFieldName").text());
.replace("@@COMPARISONRESULT", customer.find("ComparisonResult").text());
newRows += row;
});
$("[id$=grd]").html($("[id$=grd]").html() + newRows);
}