忙了两天终于搞定升级到ar14版本,坑无数,终于算全部解决,在这里做一个小结。
1.第一步去掉框架中原本集成的ar13部分(吐槽一下应该是对12的集成)。
首先去掉licenses.licx文件。
然后删掉这些引用
删掉ActiveReports.ReportService.asmx
删掉
去掉web.config文件里的关于ar13的配置,想不懂为什么ar13集成为什么会这么麻烦。
搞定,截图真的是个雷人的活
2.第二部是下载事例工程,地址https://github.com/activereports/WebSamples14
3.通过nuget引入需要的库,葡萄城终于支持这个了,希望力软也能把基础库放到nuget上
Microsoft.Owin.Host.SystemWeb,这个一定要选4.0.0版本,一定要,高版本会报错,坑!
Gcef.Data.DataEngine
GrapeCity.ActiveReports.Aspnet.Viewer
4.接下来从下来的实例工程中复制几个我们需要的文件找到这个工程,打开
首先是这个文件,放在我们原来删除的地方就好了。
这两个文件,复制到力软框架下。
需要依赖的东西都准备好了。
5.添加启动类
代码为
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
using
GrapeCity.ActiveReports;
using
GrapeCity.ActiveReports.Aspnet.Viewer;
using
GrapeCity.ActiveReports.PageReportModel;
using
GrapeCity.ActiveReports.Rendering;
using
Learun.Application.TwoDevelopment.LR_CodeDemo;
using
Microsoft.Owin;
using
Owin;
using
System.Collections.Generic;
using
System.Data;
using
System.IO;
using
System.Reflection;
[assembly: OwinStartup(
typeof
(Learun.Application.Web.Startup1))]
namespace
Learun.Application.Web
{
public
class
Startup1
{
public
static
string
EmbeddedReportsPrefix =
"Learun.Application.Web"
;
public
void
Configuration(IAppBuilder app)
{
app.UseReporting(settings =>
{
settings.UseCompression =
true
;
settings.UseCustomStore(GetReport);
//使用UseCustomStore来自定义一些需要的值
//settings.UseFileStore(new DirectoryInfo(String.Format(@"{0}.\Reports\", HttpRuntime.AppDomainAppPath)));
settings.LocateDataSource = GetData;
});
}
public
object
GetReport(
string
P)
//获取报表名称和报表参数,进行一个对应的报表名称和参数的分割
{
var
plist = P.Split(
'|'
);
string
reportName = plist[0];
//报表名称;
PageReport rep =
new
PageReport();
string
path = Assembly.GetExecutingAssembly().CodeBase.Replace(
"bin/Learun.Application.Web.DLL"
,
"Reports/"
).Replace(
"file:///"
,
""
);
//string path = System.Web.Hosting.HostingEnvironment.MapPath("~/");
rep.Load(
new
FileInfo(path + reportName));
int
num = 0;
foreach
(
var
item
in
plist)
{
if
(num > 0)
{
AddReportPara(
"param"
+ num, item, rep);
}
num++;
}
return
rep.Report;
}
/// <summary>
/// 报表参数添加
/// </summary>
/// <param name="name">参数名</param>
/// <param name="value">参数值</param>
/// <param name="rp">报表体</param>
private
void
AddReportPara(
string
name,
string
value, PageReport rep)
{
//如果没有值,报表不会自动运行,所以不能加
if
(
string
.IsNullOrEmpty(value.Trim()))
{
return
;
}
Dictionary<
string
,
string
> dicParas =
new
Dictionary<
string
,
string
>();
foreach
(
var
item
in
rep.Report.ReportParameters)
{
if
(!dicParas.ContainsKey(item.Name))
{
dicParas.Add(item.Name, item.DefaultValue.Values[0].Expression);
}
}
if
(!dicParas.ContainsKey(name))
{
ReportParameter para =
new
ReportParameter();
para.Name = name;
para.Prompt = name;
para.UsedInQuery = ReportParameterUsedInQuery.True;
para.DataType = ReportParameterDataType.String;
para.DefaultValue.Values.Add(value.Trim());
rep.Report.ReportParameters.Add(para);
}
}
/// <summary>
/// 自定义数据源
/// </summary>
/// <param name="args">报表数据参数</param>
/// <returns></returns>
public
object
GetData(LocateDataSourceArgs args)
{
Dictionary<
string
,
string
> dcFilter =
new
Dictionary<
string
,
string
>();
DataTable dtData =
new
DataTable();
string
name = args.Report.Name.ToString();
string
dataSource = args.DataSet.Query.DataSourceName;
string
dataSet = args.DataSet.Name;
switch
(name)
{
case
"制程工单.rdlx"
:
if
(args.Report.ReportParameters.Count > 0) {
var
id = args.Report.ReportParameters[0].DefaultValue.Values[0].Expression;
WorkOrderIBLL workOrderIBLL =
new
WorkOrderBLL();
dtData = workOrderIBLL.GetPrintItem(id);
}
break
;
}
return
dtData;
}
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
<!
DOCTYPE
html>
<
html
lang="zh-CN">
<
head
>
<
meta
name=”renderer” content=”webkit|ie-comp|ie-stand” />
<
meta
name="viewport" content="width=device-width, initial-scale=1" />
<
meta
http-equiv="content-type" content="text/html; charset=UTF-8">
<
meta
http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<
meta
name="renderer" content="webkit">
<
link
rel="icon" href="~/favicon.ico">
<
title
>@ViewBag.Title|力软信息|快速开发平台|Learun敏捷开发框架</
title
>
<
link
href="~/Content/font/css/font-awesome.min.css" rel="stylesheet" />
<
link
href="~/Content/bootstrap/bootstrap.min.css" rel="stylesheet" />
<
script
src="~/Content/jquery/jquery-1.10.2.min.js"></
script
>
<
script
src="~/Content/fonts/bootstrap-3.0.0.js"></
script
>
@*<
link
href="~/Content/fontGity/css/materialdesignicons.min.css" rel="stylesheet" />*@
<
link
href="~/Content/GrapeCity/jsViewer.min.css" rel="stylesheet" />
<
script
src="~/Content/GrapeCity/jsViewer.min.js"></
script
>
<
script
>
function request(d) { for (var c = location.search.slice(1).split("&"), a = 0; a <
c.length
; a++) { var b = c[a].split("="); if (b[0] == d) if ("undefined" == unescape(b[1])) break; else return unescape(b[1]) } return "" };
</script>
<
style
>
div.page {
margin: auto;
}
#singleView {
position: relative !important;
}
/*.btn-toolbar .btn-group {
clear:left;
display:inline-block;
}
.ar-viewer .toolbar {
display: flex;
justify-content: flex-end;
flex-direction: row;
text-align:right;
}*/
</
style
>
</
head
>
<
body
class="@Learun.Util.Net.Browser @Learun.Util.WebHelper.GetUITheme()">
@RenderBody()
</
body
>
</
html
>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
<!
DOCTYPE
html>
<
html
lang="zh-CN">
<
head
>
<
meta
name=”renderer” content=”webkit|ie-comp|ie-stand” />
<
meta
name="viewport" content="width=device-width, initial-scale=1" />
<
meta
http-equiv="content-type" content="text/html; charset=UTF-8">
<
meta
http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<
meta
name="renderer" content="webkit">
<
link
rel="icon" href="~/favicon.ico">
<
title
>@ViewBag.Title|力软信息|快速开发平台|Learun敏捷开发框架</
title
>
<
meta
name=”renderer” content=”webkit|ie-comp|ie-stand” />
<
meta
http-equiv="content-type" content="text/html; charset=UTF-8">
<
meta
http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<
meta
name="viewport" content="width=device-width, initial-scale=1" />
<
link
rel="icon" href="~/favicon.ico">
<
link
href="~/Content/font/css/font-awesome.min.css" rel="stylesheet" />
<
link
href="~/Content/bootstrap/bootstrap.min.css" rel="stylesheet" />
<
script
src="~/Content/jquery/jquery-1.10.2.min.js"></
script
>
<
script
src="~/Content/fonts/bootstrap-3.0.0.js"></
script
>
@*<
link
href="~/Content/fontGity/css/materialdesignicons.min.css" rel="stylesheet" />*@
<
link
href="~/Content/GrapeCity/jsViewer.min.css" rel="stylesheet" />
<
script
src="~/Content/GrapeCity/jsViewer.min.js"></
script
>
<
script
>
function request(d) { for (var c = location.search.slice(1).split("&"), a = 0; a <
c.length
; a++) { var b = c[a].split("="); if (b[0] == d) if ("undefined" == unescape(b[1])) break; else return unescape(b[1]) } return "" };
</script>
@Html.AppendCssFile(
"/Views/LR_Content/style/lr-common.css",
"/Views/LR_Content/plugin/scroll/scroll.css",
"/Views/LR_Content/style/lr-iframe-index.css",
"/Views/LR_Content/plugin/layout/lr-layout.css",
"/Views/LR_Content/plugin/tree/lr-tree.css",
"/Views/LR_Content/plugin/select/lr-select.css",
"/Views/LR_Content/plugin/timeline/lr-timeline.css",
"/Views/LR_Content/plugin/formselect/lr-formselect.css",
"/Views/LR_Content/plugin/custmerquery/lr-custmerquery.css",
"/Views/LR_Content/plugin/date/lr-datepicker.css",
"/Views/LR_Content/plugin/grid/jfgrid.css")
<
script
src="~/Content/laydate/laydate.js"></
script
>
@Html.SetCurrentUrl()
</
head
>
<
body
class="@Learun.Util.Net.Browser @Learun.Util.WebHelper.GetUITheme()">
@RenderBody()
@Html.AppendJsFile(
"/Views/LR_Content/plugin/resize/resize.js",
"/Views/LR_Content/plugin/mousewheel/mousewheel.js",
"/Views/LR_Content/plugin/scroll/scroll.js",
"/Views/LR_Content/plugin/layout/lr-layout.js",
"/Views/LR_Content/plugin/tree/lr-tree.js",
"/Views/LR_Content/plugin/select/lr-select.js",
"/Views/LR_Content/plugin/timeline/lr-timeline.js",
"/Views/LR_Content/plugin/formselect/lr-formselect.js",
"/Views/LR_Content/plugin/custmerquery/lr-custmerquery.js",
"/Views/LR_Content/plugin/date/lr-datepicker.js",
"/Views/LR_Content/script/lr-validator.js",
"/Views/LR_Content/script/lr-authorize.js",
"/Views/LR_Content/script/lr-excel.js",
"/Views/LR_Content/script/lr-form.js",
"/Views/LR_Content/plugin/grid/jfgrid.js"
)
<
script
>
$(function () {
$('#lr_layout').lrLayout();
// 翻译指定标签
$('.lrlg').each(function () {
var $this = $(this);
top.learun.language.get($this.text(), function (text) {
$this.text(text);
});
});
// 翻译表单标题
$('.lr-form-item-title').each(function () {
var $this = $(this);
var $font = $this.find('font');
$font.remove();
top.learun.language.get($this.text(), function (text) {
if ($font.length > 0) {
$this.html(text + '<
font
face="宋体">*</
font
>');
}
else {
$this.text(text);
}
});
});
// input placeholder 翻译
$('input[placeholder]').each(function () {
var $this = $(this);
var _text = $this.attr('placeholder');
top.learun.language.get(_text, function (text) {
$this.attr('placeholder', text);
});
});
top.learun.httpAsync('GET', top.$.rootUrl + '/LR_SystemModule/Module/GetAuthorizeButtonColumnList', { url: lrCurrentUrl }, function (data) {
lrModuleButtonList = data.btns;
lrModuleColumnList = data.cols;
lrModule = data.module;
window.lrModuleForms = data.forms;
if (!!window.bootstrap) {
bootstrap(jQuery, top.learun);
}
});
});
</
script
>
</
body
>
</
html
>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
|
/* * 版 本 Learun-ADMS V7.0.6 力软敏捷开发框架(http://www.learun.cn)
* Copyright (c) 2013-2020 上海力软信息技术有限公司
* 创建人:超级管理员
* 日 期:2019-03-14 15:17
* 描 述:报表文件管理
*/
var
refreshGirdData;
var
fileId;
var
keyValue;
var
bootstrap =
function
($, learun) {
"use strict"
;
var
viewer
var
page = {
init:
function
() {
//page.initGird();
page.bind();
},
bind:
function
() {
// 初始化左侧树形数据
$(
'#dataTree'
).lrtree({
url: top.$.rootUrl +
'/LR_ReportModule/RptManage/GetDetailTree'
,
nodeClick:
function
(item) {
//type = item.value;
$(
'#titleinfo'
).text(item.text);
if
(item.id.length > 20) {
fileId = item.value;
keyValue = item.id;
page.show(item.value);
}
}
});
//$('#multiple_condition_query').lrMultipleQuery(function (queryJson) {
// page.search(queryJson);
//}, 180, 400);
$(
'#F_Type'
).lrDataItemSelect({ code:
'ReportSort'
});
// 刷新
$(
'#lr_refresh'
).on(
'click'
,
function
() {
location.reload();
});
// 新增
$(
'#lr_add'
).on(
'click'
,
function
() {
learun.layerForm({
id:
'form'
,
title:
'新增'
,
url: top.$.rootUrl +
'/LR_ReportModule/RptManage/Form'
,
width: 600,
height: 400,
callBack:
function
(id) {
return
top[id].acceptClick(page.init());
}
});
});
// 编辑
$(
'#lr_edit'
).on(
'click'
,
function
() {
//var keyValue = $('#gridtable').jfGridValue('F_Id');
if
(learun.checkrow(keyValue)) {
learun.layerForm({
id:
'form'
,
title:
'编辑'
,
url: top.$.rootUrl +
'/LR_ReportModule/RptManage/Form?keyValue='
+ keyValue,
width: 600,
height: 400,
callBack:
function
(id) {
return
top[id].acceptClick(page.init());
}
});
}
});
// 删除
$(
'#lr_delete'
).on(
'click'
,
function
() {
//var keyValue = $('#gridtable').jfGridValue('F_Id');
if
(learun.checkrow(keyValue)) {
learun.layerConfirm(
'是否确认删除该项!'
,
function
(res) {
if
(res) {
learun.deleteForm(top.$.rootUrl +
'/LR_ReportModule/RptManage/DeleteForm'
, { keyValue: keyValue },
function
() {
page.init();
});
}
});
}
});
// 打印
$(
'#lr_print'
).on(
'click'
,
function
() {
//var reportId = $('#gridtable').jfGridValue('F_File');
learun.frameTab.open({ F_ModuleId:
'report'
, F_Icon:
'fa magic'
, F_FullName: fileId, F_UrlAddress:
'/LR_ReportModule/RptManage/Report?reportId='
+ encodeURI(encodeURI(fileId)) });
//learun.layerForm({
// id: 'form',
// title: '预览',
// url: top.$.rootUrl + '/LR_ReportModule/RptManage/Report?reportId=' + encodeURI(encodeURI(reportId)),
// width: 1024,
// height: 768,
// callBack: function (id) {
// // return top[id].acceptClick(refreshGirdData);
// }
//});
});
viewer = GrapeCity.ActiveReports.JSViewer.create({
element:
'#viewerContainer'
,
availableExports: [
'Xml'
,
'Pdf'
,
'Excel'
],
reportService: {
url: top.$.rootUrl +
'/api/reporting'
}
});
},
show:
function
(reportId) {
viewer.openReport(reportId);
},
// 初始化列表
initGird:
function
() {
$(
'#gridtable'
).lrAuthorizeJfGrid({
url: top.$.rootUrl +
'/LR_ReportModule/RptManage/GetPageList'
,
headData: [
{ label:
"报表编码"
, name:
"F_Code"
, width: 100, align:
"left"
},
{ label:
"报表名称"
, name:
"F_Name"
, width: 100, align:
"left"
},
{
label:
"报表类型"
, name:
"F_Type"
, width: 100, align:
"left"
,
formatterAsync:
function
(callback, value, row, op, $cell) {
learun.clientdata.getAsync(
'dataItem'
, {
key: value,
code:
'ReportSort'
,
callback:
function
(_data) {
callback(_data.text);
}
});
}
},
{ label:
"排序"
, name:
"F_SortCode"
, width: 100, align:
"left"
},
{ label:
"报表文件"
, name:
"F_File"
, width: 100, align:
"left"
},
{ label:
"备注"
, name:
"F_Description"
, width: 100, align:
"left"
},
],
mainId:
'F_Id'
,
isPage:
true
});
page.search();
},
search:
function
(param) {
param = param || {};
$(
'#gridtable'
).jfGridSet(
'reload'
, { queryJson: JSON.stringify(param) });
}
};
refreshGirdData =
function
() {
$(
'#gridtable'
).jfGridSet(
'reload'
);
};
page.init();
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* * 版 本 Learun-ADMS V7.0.6 力软敏捷开发框架(http://www.learun.cn)
* Copyright (c) 2013-2020 上海力软信息技术有限公司
* 创建人:超级管理员
* 日 期:2019-03-14 15:17
* 描 述:报表文件管理
*/
$(
function
() {
var
reportId = request(
'reportId'
);
//var isPrint = request('isPrint');
reportId = decodeURI(reportId);
var
viewer = GrapeCity.ActiveReports.JSViewer.create({
element:
'#viewerContainer'
,
reportID: reportId,
availableExports: [
'Xml'
,
'Pdf'
,
'Excel'
],
reportService: {
url: top.$.rootUrl +
'/api/reporting'
},
//documentLoaded: function () {
// if (isPrint == '1') {
// setTimeout(function () {
// viewer.print();
// }, 100);
// }
//}
});
});
|
完工,祝你好运!