单击按钮 Dynamics CRM 365 时显示进度
show progress when click button Dynamics CRM 365
我有一个功能区按钮来执行自定义工作流程。此操作来自 JavaScript 的设置,并且运行良好。在这种情况下,我想在点击后或自定义工作流程执行期间显示加载进度。
我刚刚学习了教程 HERE。这是我的 javascript 函数代码:
function showLoadingMessage() {
try{
tdAreas.style.display = 'none';
var newdiv = document.createElement('div');
newdiv.setAttribute('id', "msgDiv");
newdiv.valign = "middle";
newdiv.align = "center";
var divInnerHTML = "<table height='100%' width='100%' style='cursor:wait'>";
divInnerHTML += "<tr>";
divInnerHTML += "<td valign='middle' align='center'>";
divInnerHTML += "<img alt='' src='/_imgs/AdvFind/progress.gif'/>";
divInnerHTML += "<div/><b>Working…</b>";
divInnerHTML += "</td></tr></table>";
newdiv.innerHTML = divInnerHTML;
newdiv.style.background = '#FFFFFF';
newdiv.style.fontSize = "15px";
newdiv.style.zIndex = "1010";
newdiv.style.width = document.body.clientWidth;
newdiv.style.height = document.body.clientHeight;
newdiv.style.position = 'absolute';
document.body.insertBefore(newdiv, document.body.firstChild);
document.all.msgDiv.style.visibility = 'visible';
}
catch(ex){
alert(ex.message);
}
}
这个是为了隐藏进度:
function hideLoadingMessage(){
document.all.msgDiv.style.visibility = 'hidden';
}
这是我在功能区按钮操作中调用的函数,用于测试加载进度是否有效:
function ribbonButton()
{
var guid = Xrm.Page.data.entity.getId();
if (guid != null)
{
showLoadingMessage(); //show progress
/*var workflowId = '04E84379-87E4-E711-814E-000C294D2FF8';
var workflowName = 'CloneReward';
ExecuteWorkflow(workflowId, workflowName, function ()
{
RefreshForm();
});*/
//hideLoadingMessage(); //hide progress
}
}
当我按下按钮时,我收到以下错误消息:
需要任何建议。谢谢。
刚刚尝试了这个 THIS 教程,它将解决上述问题。
显示加载进度:
function _buildLoadingDiv(_entityName) {
var loadingDiv = "<div id='divLoading'style='width: 100%; height: 100%; display: block; position: fixed; top:0px; background:rgba(255,255,255,0.5);'><table style='width: 100%; height: 100%;'><tr><td align='center' style='vertical-align: middle;'>";
loadingDiv += "<img id='loading' alt='' src='/_imgs/AdvFind/progress.gif'/><br/>";
loadingDiv += "<label id='lblStatus'>Loading... " + _entityName + " Execute Workflow</label>";
loadingDiv += "</td></tr></table></div>";
$($('body', window.parent.document)).append(loadingDiv);
}
隐藏加载进度:
function _removeLoading() {
$($('body', window.parent.document)).find("#divLoading").remove();
}
有新的好客户端 API 正是这个功能:https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/clientapi/reference/xrm-utility/showprogressindicator
这是它在工作中的样子的例子:http://www.itaintboring.com/dynamics-crm/dynamics-365-v9-progress-indicator-api/
唯一的缺点是它仅适用于 Dynamics 版本 9。
我有一个功能区按钮来执行自定义工作流程。此操作来自 JavaScript 的设置,并且运行良好。在这种情况下,我想在点击后或自定义工作流程执行期间显示加载进度。
我刚刚学习了教程 HERE。这是我的 javascript 函数代码:
function showLoadingMessage() {
try{
tdAreas.style.display = 'none';
var newdiv = document.createElement('div');
newdiv.setAttribute('id', "msgDiv");
newdiv.valign = "middle";
newdiv.align = "center";
var divInnerHTML = "<table height='100%' width='100%' style='cursor:wait'>";
divInnerHTML += "<tr>";
divInnerHTML += "<td valign='middle' align='center'>";
divInnerHTML += "<img alt='' src='/_imgs/AdvFind/progress.gif'/>";
divInnerHTML += "<div/><b>Working…</b>";
divInnerHTML += "</td></tr></table>";
newdiv.innerHTML = divInnerHTML;
newdiv.style.background = '#FFFFFF';
newdiv.style.fontSize = "15px";
newdiv.style.zIndex = "1010";
newdiv.style.width = document.body.clientWidth;
newdiv.style.height = document.body.clientHeight;
newdiv.style.position = 'absolute';
document.body.insertBefore(newdiv, document.body.firstChild);
document.all.msgDiv.style.visibility = 'visible';
}
catch(ex){
alert(ex.message);
}
}
这个是为了隐藏进度:
function hideLoadingMessage(){
document.all.msgDiv.style.visibility = 'hidden';
}
这是我在功能区按钮操作中调用的函数,用于测试加载进度是否有效:
function ribbonButton()
{
var guid = Xrm.Page.data.entity.getId();
if (guid != null)
{
showLoadingMessage(); //show progress
/*var workflowId = '04E84379-87E4-E711-814E-000C294D2FF8';
var workflowName = 'CloneReward';
ExecuteWorkflow(workflowId, workflowName, function ()
{
RefreshForm();
});*/
//hideLoadingMessage(); //hide progress
}
}
当我按下按钮时,我收到以下错误消息:
需要任何建议。谢谢。
刚刚尝试了这个 THIS 教程,它将解决上述问题。
显示加载进度:
function _buildLoadingDiv(_entityName) {
var loadingDiv = "<div id='divLoading'style='width: 100%; height: 100%; display: block; position: fixed; top:0px; background:rgba(255,255,255,0.5);'><table style='width: 100%; height: 100%;'><tr><td align='center' style='vertical-align: middle;'>";
loadingDiv += "<img id='loading' alt='' src='/_imgs/AdvFind/progress.gif'/><br/>";
loadingDiv += "<label id='lblStatus'>Loading... " + _entityName + " Execute Workflow</label>";
loadingDiv += "</td></tr></table></div>";
$($('body', window.parent.document)).append(loadingDiv);
}
隐藏加载进度:
function _removeLoading() {
$($('body', window.parent.document)).find("#divLoading").remove();
}
有新的好客户端 API 正是这个功能:https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/clientapi/reference/xrm-utility/showprogressindicator
这是它在工作中的样子的例子:http://www.itaintboring.com/dynamics-crm/dynamics-365-v9-progress-indicator-api/
唯一的缺点是它仅适用于 Dynamics 版本 9。