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();

如有错误,欢迎指正~

 

 

posted @ 2022-07-20 20:22  整只龙虾  阅读(341)  评论(0)    收藏  举报