Power App Portal使用Action、automate控制查找字段筛选范围2(数据量大怎么办?)
效果图:

1、获取数据:
在form自定义代码里增加调用action的function
function AutomateActionGetProduct(productname,currentPage, pagesize) {
var dataproduct = {};
var json_data = {};
json_data.currentPage = currentPage;
json_data.pagesize = pagesize;
json_data.productname = productname;
$.ajax({
url: requestURL["PoartalActionURL13"],//automate响应的https的url
type: 'POST',
data: JSON.stringify(json_data),
contentType: "application/json; charset=utf-8",
datatype: "json",
async: false,
success: function (data) {
dataproduct = data;
}, error: function (ex) {
console.log(ex);
}
});
countlist = dataproduct.listcount;//action中回传的总数
return dataproduct.porductentity;//将返回数据return
}
在$(document).ready(function () {}方法中存储调用并存入变量
var jsondata = AutomateActionGetProduct("","1", "10");
2、删除原有表格:
//获取表格属性
var list = $("#zt_productnameid_lookupmodal").find(".entity-lookup").find(".entity-grid").eq(0);
//删除所有表格行
list.find("table > tbody > tr").remove();
//删除portal标准分页
$(".view-pagination").hide();
3、添加数据
在列表加载事件中添加控制,删除原有筛选
list.on("loaded", function () {
//删除原有筛选
$("#zt_productnameid_lookupmodal").find(".view-toolbar").find("input").remove();
//增加样式
$("#zt_productnameid_lookupmodal").find(".view-toolbar").find("button").before('<input placeholder="Search" style="width: 80%;" title="" value="' + quer + '" id="ceshi" class="query form-control">');
//删除表格行
list.find("table > tbody > tr").remove();
//隐藏原分页
$(".view-pagination").hide();
//在获取到数据后循环填充新的表格数据
$.each(jsondata, function (index, data) {
list.find("table > tbody").append(`
<tr data-id="`+ data.productid + `" data-entity="product" data-name="` + data.name + `">
<td data-th="Select" aria-label="">
<span>
<input type="checkbox" id="`+ data.productid + `" onchange="test('` + data.productid + `')" tabindex="0" value="` + data.productid + `"></input>
</span>
</td>
<td data-type="System.String" data-attribute="name" data-value="`+ data.name + `" data-th="Name" aria-label="` + data.name + `">
`+ data.name + `
</td>
<td data-type="System.String" data-attribute="msdyn_productnumber" data-value="`+ data.msdyn_itemnumber + `" data-th="Product Number" aria-label="` + data.msdyn_itemnumber + `">
`+ data.msdyn_itemnumber + `
</td>
<td data-type="System.String" data-attribute="hierarchypath" data-value="`+ data.hierarchypath + `" data-th="Hierarchy Path" aria-label="` + data.hierarchypath + `">
`+ data.hierarchypath + `
</td>
<td data-type="System.String" data-attribute="producttypecode" data-value="`+ data.producttypecode + `" data-th="Product Type" aria-label="` + data.producttypecode + `">
`+ data.producttypecode + `
</td>
<td data-type="System.String" data-attribute="subjectid" data-value="`+ data.subjectid + `" data-th="Subject" aria-label="` + data.subjectid + `">
`+ data.subjectid + `
</td>
</tr>
`);
});
//用总量得到页数
var total = parseInt(countlist) / 10;
list.find("table").parent().append(`
<ul class="pagination" style="float:left">
<li>
<span style="margin-right:10px;">Total:`+ countlist + ` <span>
</li>
<li>
<span style="margin-right:10px;width: 120px;" id="page">Current Page:`+ page + ` <span>
</li>
<li>
<span style="margin-right:10px;width: 120px;">Total Page:`+ Math.ceil(total) + ` <span>
</li>
</ul>
<ul class="pagination" style="float:right;margin-right:50px;">
<li>
<a href="#" onclick="LoadProductList(`+ false + `)" style="border: 1px solid #ccc;
height: 30px;
width: 50px;
border-radius: 5px;">Prev</a>
</li>
<li>
<a href="#" onclick="LoadProductList(`+ true + `)"style="border: 1px solid #ccc;
height: 30px;
width: 50px;
border-radius: 5px;">Next</a>
</li>
</ul>
`);
});
4、分页点击加载list:
function LoadProductList(Upanddown,productnamecx="") {//增加初始赋值确保未筛选情况下为空字符串 if(!!productnamecx){ page = "1"; }else{ if (!!Upanddown) { var number = parseInt(page) + 1; var total = parseInt(countlist) / 10; if(number > Math.ceil(total)){ number = Math.ceil(total) } page = number.toString(); } else { var number = parseInt(page) - 1; if(number == 0){ number = 1; } page = number.toString(); } } $("#page_cx").html(`Current Page:` + page); var jsondata = AutomateActionGetProduct(productnamecx,page, pagecount); productdate = JSON.parse(jsondata); var list = $("#zt_productnameid_lookupmodal").find(".entity-lookup").find(".entity-grid").eq(0); $("#zt_productnameid_lookupmodal").find(".view-toolbar").find("input").remove(); $("#zt_productnameid_lookupmodal").find(".view-toolbar").find("button").before('<input placeholder="Search" style="width: 80%;" title="" value="' + quer + '" id="ceshi" class="query form-control">'); //删除行
list.find("table > tbody > tr").remove(); $(".view-pagination").hide(); //填充 $.each(productdate, function (index, data) { list.find("table > tbody").append(` <tr data-id="`+ data.productid + `" data-entity="product" data-name="` + data.name + `"> <td data-th="Select" aria-label=""> <span> <input type="checkbox" id="`+ data.productid + `" onchange="test('` + data.productid + `')" tabindex="0" value="` + data.productid + `"></input> </span> </td> <td data-type="System.String" data-attribute="name" data-value="`+ data.name + `" data-th="Name" aria-label="` + data.name + `"> `+ data.name + ` </td> <td data-type="System.String" data-attribute="msdyn_productnumber" data-value="`+ data.msdyn_itemnumber + `" data-th="Product Number" aria-label="` + data.msdyn_itemnumber + `"> `+ data.msdyn_itemnumber + ` </td> <td data-type="System.String" data-attribute="hierarchypath" data-value="`+ data.hierarchypath + `" data-th="Hierarchy Path" aria-label="` + data.hierarchypath + `"> `+ data.hierarchypath + ` </td> <td data-type="System.String" data-attribute="producttypecode" data-value="`+ data.producttypecode + `" data-th="Product Type" aria-label="` + data.producttypecode + `"> `+ data.producttypecode + ` </td> <td data-type="System.String" data-attribute="subjectid" data-value="`+ data.subjectid + `" data-th="Subject" aria-label="` + data.subjectid + `"> `+ data.subjectid + ` </td> </tr> `); }); }
5、筛选:
$("#zt_productnameid_lookupmodal").find(".view-toolbar").find("button").ready(function () {
$("#zt_productnameid_lookupmodal").find(".view-toolbar").find("button").click(function () {
query = $("#ceshi").val();
LoadProductList(false,query)
});
});
Action代码我就不贴了(bushi);)
主要参数和xml:
string productname = context.InputParameters["productname"].ToString();
string pagesize = context.InputParameters["pagesize"].ToString();
string currentPage = context.InputParameters["currentPage"].ToString();
string porductFetchxml = @"<fetch version='1.0' output-format='xml-platform' mapping='logical' count='" + pagesize + @"' page='" + currentPage + @"' returntotalrecordcount='true'>
var listCount = porductInfo.TotalRecordCount.ToString();
如有错误,欢迎指正~

浙公网安备 33010602011771号