adgao
发表于 2021-1-30 20:44:22
之前R14保存页面功能如下所示,看看R15怎样实现
@{
Layout = null;
var reportId = ViewBag.reportId == null ? "" : ViewBag.reportId;
var reportName = ViewBag.reportName == null ? "" : ViewBag.reportName;
var theme = "blue";
}
<!DOCTYPE html>
<html lang="en">
<head>
<title>ActiveReports Web Designer</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<!-- No Virtual Directory -->
<base href="/">
<!-- For Virtual Directory -->
<!--<base href="/VirtualDirectoryName/">-->
<link rel="stylesheet" href="/Content/AR/vendor/css/materialdesignicons.min.css" media="all" type="text/css" />
<link rel="stylesheet" href="/Content/AR/vendor/css/bootstrap.min.css" />
<link rel="stylesheet" href="/Content/AR/vendor/css/font-awesome.min.css" />
<link rel="stylesheet" href="/Content/AR/vendor/css/ionicons.min.css">
<link rel="stylesheet" href="/Content/AR/vendor/css/fonts-googleapis.css" type="text/css" />
<link rel="stylesheet" href="/Content/AR/file-dialog.css" />
<link rel="stylesheet" href="/Content/AR/data-set-picker.css" />
<link rel="stylesheet" href="/Content/AR/file-view.css" />
<link rel="stylesheet" href="/Content/AR/viewer-container.css" />
<link rel="stylesheet" href="/Content/AR/ar-datasource-editor.css" />
<link rel="stylesheet" href="/Content/AR/web-designer.css" />
<link rel="icon" type="image/png" sizes="32x32" href="/Content/AR/icons/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="/Content/AR/icons/favicon-16x16.png" />
<link rel="shortcut icon" href="/Content/AR/icons/favicon.ico" />
<style>
.gc-appbar__title {
display:none;
}
</style>
</head>
<body class="theme-@(theme)">
<script src="/Content/AR/vendor/js/jquery.min.js"></script>
<script src="/Content/AR/vendor/js/bootstrap.min.js"></script>
<script src="/Content/AR/baseServerApi.js"></script>
<script src="/Content/AR/file-dialog.js"></script>
<script src="/Content/AR/data-set-picker.js"></script>
<script src="/Content/AR/file-view.js"></script>
<script src="/Content/AR/viewer-container.js"></script>
<script src="/Content/AR/ar-datasource-editor.js"></script>
<script src="/Content/AR/web-designer.js"></script>
<div id="designer-id" style="width: 100%; height: 100%;"></div>
<div id="file-view-id" style="width: 100%; height: 100%; display: none;"></div>
<div id="viewer-container-id" class="theme-default" style="width: 100%; height: 100%; display: none;"></div>
<div id="save-as-dialog-id" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; display: none; z-index: 9999;"></div>
<div id="data-set-picker-dialog-id" style="position: absolute;top: 0;left: 0;width: 100%;height: 100%;display: none;z-index: 9999;background-color: #dedede;"></div>
<div id="data-source-editor-dialog-id"></div>
<script>
var oldReportId = "@reportId";
var keyValue = "@Request["ID"]";
function reload() {
window.location.reload();
}
var showElement = function (id) {
if (!id) return;
($('#' + id)).css('display', 'block');
};
var hideElement = function (id) {
if (!id) return;
($('#' + id)).css('display', 'none');
};
var designerId = 'designer-id';
var fileViewId = 'file-view-id';
var viewerContainerId = 'viewer-container-id';
var saveAsDialogId = 'save-as-dialog-id';
var dataSetPickerDialogId = 'data-set-picker-dialog-id';
var dataSourceEditorDialogId = 'data-source-editor-dialog-id';
var dialogs = [
saveAsDialogId,
dataSetPickerDialogId, dataSourceEditorDialogId,
];
var hideDialogs = function () {
dialogs.forEach(hideElement);
}
var showDesigner = function () {
var info = GrapeCity.ActiveReports.WebDesigner.api.getReportInfo();
var isDirty = GrapeCity.ActiveReports.WebDesigner.api.isReportDirty();
document.title = info.name + (isDirty ? ' *' : '');
showElement(designerId);
GrapeCity.ActiveReports.WebDesigner.focus();
};
var showViewer = function () {
showElement(viewerContainerId);
hideElement(designerId);
};
function onSave(options) {
GrapeCity.ActiveReports.WebDesigner.api.saveReport({
reportInfo: {
id: options.reportInfo.id,
name: options.reportInfo.name,
},
});
}
function onSaveAs(options) {
showElement(saveAsDialogId);
fileDialog.createSaveReportAsDialog(saveAsDialogId, {
api: {
getReportsList: function() {
return baseServerApi.getReportsList().then(function(reportsList) {
return reportsList.map(function(reportInfo) {
return { path: reportInfo.Name };
});
});
},
saveReport: function (saveOptions) {
return baseServerApi.saveNewReport({ name: saveOptions.path, content: options.reportInfo.content }).then(function (saveResult) {
return { id: saveResult.Id };
});
},
},
locale: options.locale,
reportInfo: {
path: options.reportInfo.name,
},
onSuccess: function (saveResult) {
hideElement(saveAsDialogId);
options.onSuccess({ id: saveResult.id, name: saveResult.path });
},
onClose: function () {
hideElement(saveAsDialogId);
showDesigner();
},
});
}
var makeOptions = function (baseOptions, additionalOptions) {
return $.extend({}, baseOptions || {}, additionalOptions || {});
}
var designerOptions = GrapeCity.ActiveReports.WebDesigner.createDesignerOptions(baseServerApi);
designerOptions.reportInfo = '@reportId' ? { id: '@reportId' } : null;
// Used in About dialog and File View Help tab.
designerOptions.documentation.home = 'https://www.grapecity.com/activereports/docs/v14/online-webdesigner/overview.html';
// Used in notifications about report items transformation.
designerOptions.documentation.reportItemsTransformation = 'https://www.grapecity.com/activereports/docs/v14/online-webdesigner/supportedcontrols.html';
designerOptions.reportItemsFeatures.table.autoFillFooter = true;
designerOptions.saveButton.visible = true;
designerOptions.onSave = onSave;
designerOptions.saveAsButton.visible = true;
designerOptions.onSaveAs = onSaveAs;
designerOptions.openFileView = function (options) {
hideElement(designerId);
showElement(fileViewId);
var fileViewOptions = makeOptions(options, {
onClose: function () {
if (options.onClose) options.onClose();
hideElement(fileViewId);
showDesigner();
},
serverApi: {
getReportsList: baseServerApi.getReportsList,
getReportRevisions: baseServerApi.getReportRevisions,
getDataSetsList: baseServerApi.getDataSetsList,
getTemplatesList: baseServerApi.getTemplatesList,
getTemplateContent: baseServerApi.getTemplateContent,
getTemplateThumbnail: baseServerApi.getTemplateThumbnail,
},
createReport: function (p1) {
console.log(p1);
if (confirm("当前操作将覆盖源文件,请确认是否覆盖")) {
var source = "rdl.rdlx";
if (p1.reportType == "FPL") {
source = "page.rdlx";
} else if (p1.reportType == undefined) {
source = "organize.rdlx";
}
$.ajax({
url: "/ImpSence/Office_Report/NewReport",
type: "post",
data: { source: source, target: oldReportId },
dataType: "json",
success: function (data) {
if (data.error == 0) {
//p1.reportInfo = { id:oldReportId,name: oldReportId };
//GrapeCity.ActiveReports.WebDesigner.api.openReport(p1);
p1.onFinish();
GrapeCity.ActiveReports.WebDesigner.renderApplication(designerId, designerOptions);
} else {
alert(data, msg);
}
}
});
}
},
openReport: function (p1, p2, p3) {
console.log(p1);
if (confirm("当前操作将覆盖源文件,请确认是否覆盖")) {
$.ajax({
url: "/ImpSence/Office_Report/WriteExist",
type: "post",
data: { source: p1.reportInfo.id, target:oldReportId },
dataType: "json",
success: function (data) {
if (data.error == 0) {
p1.reportInfo.id = oldReportId;
p1.reportInfo.name = oldReportId;
GrapeCity.ActiveReports.WebDesigner.api.openReport(p1);
} else {
alert(data,msg);
}
}
});
}
//p1.onFinish();
},
saveReport: function (p1) {
console.log(p1);
//baseServerApi.saveExistingReport({ id:"", content:""});
GrapeCity.ActiveReports.WebDesigner.api.saveReport(p1);
//p1.onFinish();
//GrapeCity.ActiveReports.WebDesigner.api.openReport({ reportInfo: { id: oldReportId, name: oldReportId }, permissions:["all"]});
top["Form"].location.href = "/ImpSence/Office_Report/Design?ID=" + keyValue;
},
});
fileView.renderFileView(fileViewId, fileViewOptions);
};
designerOptions.openViewer = function (options) {
hideElement(designerId);
showElement(viewerContainerId);
var viewerContainerOptions = makeOptions(options, {
makeViewerUrl: function () {
var baseUrl = 'preview/';
var reportId = encodeURIComponent(options.reportInfo.id);
var themeName = '@theme' || 'blue';
return baseUrl + reportId + '?theme=' + themeName;
},
});
viewerContainer.renderViewerContainer(viewerContainerId, viewerContainerOptions, function () {
var isTemporaryReport = options.reportInfo.isTemporary;
if (isTemporaryReport) {
var reportId = options.reportInfo.id;
baseServerApi.deleteTemporaryReport({ id: reportId });
}
hideElement(viewerContainerId);
showDesigner();
});
};
designerOptions.dataTab.dataSets.canModify = true;
designerOptions.dataSetPicker.open = function (options) {
var openInPanel = options.mode === 'Panel';
if (!openInPanel) {
hideDialogs();
showElement(dataSetPickerDialogId);
}
dataSetPicker.renderDataSetPicker(openInPanel ? options.elementId : dataSetPickerDialogId, makeOptions(options, {
serverApi: {
getDataSetsList: baseServerApi.getDataSetsList,
getDataSourcesAndDataSets: baseServerApi.getDataSourcesAndDataSets,
},
onClose: function () {
options.onClose();
if (!openInPanel) hideElement(dataSetPickerDialogId);
dataSetPicker.dispose();
showDesigner();
}
}));
};
designerOptions.dataSetPicker.close = function () {
dataSetPicker.dispose();
};
designerOptions.dataTab.dataSources.canModify = true;
ARDataSourceEditor.init(dataSourceEditorDialogId);
designerOptions.openDataSourceEditor = function(options) {
ARDataSourceEditor.open(makeOptions(options, {
serverApi: {
testConnection: function (opts) {
return baseServerApi.testDataSourceConnection(makeOptions(opts, {
reportId: GrapeCity.ActiveReports.WebDesigner.api.getReportInfo().id,
}));
},
},
}));
};
GrapeCity.ActiveReports.WebDesigner.renderApplication(designerId, designerOptions);
</script>
</body>
</html>
KearneyKang
发表于 2021-2-1 10:00:28
收到,我这边先研究下,看看具体怎么替换实现
adgao
发表于 2021-2-3 10:24:45
现在有替换方法了吗?这个保存功能对开发很重要。
KearneyKang
发表于 2021-2-3 10:55:58
你好,这个问题是15暂时不支持14的写法,15这边现在在做这方面的处理:Case号25868
adgao
发表于 2021-2-5 15:49:36
不支持14,15怎么做?
KearneyKang
发表于 2021-2-5 16:50:05
15的目前不支持这部分,但是现在研发已经在进行对应的解决方案的处理了。目前正在积极的开发中
adgao
发表于 2021-2-8 07:53:29
有没有大概的时间计划?这个功能之前就有,也没做什么大的调整,不会很长时间吧?
Lenka.Guo
发表于 2021-2-8 09:16:31
您好我查了下这个Case AR-25868 的状态,已经列入Hotfix 的修复计划,具体完成时间还没确定,一般是在一周到两周左右发hotfix。
adgao
发表于 2021-2-20 10:26:51
报表保存功能修复进展如何?
KearneyKang
发表于 2021-2-20 11:00:33
你好,现在这个15.04这个版本修复了该问题
designerOptions.dataTab.dataSets.canModify = true;
designerOptions.dataTab.dataSources.canModify = true;
designerOptions.onReportSaved = function (options) { console.log(options.id); console.log(options.name) }可以在该方法中进行保存回调的操作
https://github.com/activereports/WebSamples15
通过该链接进行下载,然后更新 引用到最新的版本