没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|其它|编辑:郝浩|2009-09-24 09:40:40.000|阅读 1359 次
概述:Ext4JSLint是使用ExtAspNet来展示JSLint-Toolkit检查结果的开源项目。 JSLint-Toolkit是一个使用Rhino和JSLint的开源项目,可以对一个文件夹中的所有JavaScript进行语法检查,并显示友好的检查结果。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
引子
Ext4JSLint是使用ExtAspNet来展示JSLint-Toolkit检查结果的开源项目。
JSLint-Toolkit是一个使用Rhino和JSLint的开源项目,可以对一个文件夹中的所有JavaScript进行语法检查,并显示友好的检查结果。
下面是JSLint-Toolkit为JavaScript生成的错误列表:
1.
[
2.
[3, 39, 20,
"Expected a number and instead saw '''."
,
"/Expected '{' and instead saw '.+'\\./,"
],
3.
[3, 39, 21,
"Expected '}' and instead saw ' '."
,
"/Expected '{' and instead saw '.+'\\./,"
],
4.
[3, 68, 18,
"Be careful when making functions within a loop. Consider putting the function in a closure."
,
"})();"
]
5.
]
这是一个类似二位数组的结构,每个数组有4列,分别表示错误级别,第几行,第几列,错误信息,错误代码。
界面截图
使用SyntaxHighlighter显示JavaScript源代码
首先看下右侧IFrame中,如何使用SyntaxHighlighter来显示JavaScript源代码。
01.
<
html
>
02.
<
head
>
03.
<
title
>Untitled Page</
title
>
04.
<
link
href
=
"js/syntax/styles/shCore.css"
rel
=
"stylesheet"
type
=
"text/css"
/>
05.
<
link
href
=
"js/syntax/styles/shThemeDefault.css"
rel
=
"stylesheet"
type
=
"text/css"
/>
06.
<
style
type
=
"text/css"
">
07.
html, body
08.
{
09.
font-size: 12px;
10.
margin: 0px;
11.
padding: 0px;
12.
}
13.
.syntaxhighlighter
14.
{
15.
margin: 0 !important;
16.
}
17.
</
style
>
18.
<
script
src
=
"js/jquery-1.3.2.min.js"
type
=
"text/javascript"
></
script
>
19.
<
script
src
=
"js/syntax/scripts/shCore.js"
type
=
"text/javascript"
></
script
>
20.
<
script
src
=
"js/syntax/scripts/shBrushJScript.js"
type
=
"text/javascript"
></
script
>
21.
<
script
type
=
"text/javascript"
>
22.
// TODO
23.
</
script
>
24.
</
head
>
25.
<
body
>
26.
</
body
>
27.
</
html
>
我们引入了jQuery,来完成AJAX操作以及页面的平滑滚动,来看下JavaScript代码:
01.
SyntaxHighlighter.config.clipboardSwf =
'js/syntax/scripts/clipboard.swf'
;
02.
window.highlight =
function
(number) {
03.
$(
".line, highlighted"
).removeClass(
"highlighted"
);
04.
var
top = $(
".line:eq("
+ (number - 1) +
")"
).addClass(
"highlighted"
).offset().top - 150;
05.
$(
"html, body"
).animate({
06.
scrollTop: top
07.
}, 500);
08.
};
09.
window.loadJS =
function
(url, fn) {
10.
$.get(url,
function
(data) {
11.
data = data.replace(/</g,
"<"
).replace(/>/g,
">"
).replace(/\/r\/n/g,
"<br />"
);
12.
$(
"body"
).html(
""
);
13.
$(
"<pre class=\"brush: js\">"
+ data +
"</pre>"
).appendTo(
"body"
);
14.
SyntaxHighlighter.highlight();
15.
if
(fn) {
16.
fn();
17.
}
18.
},
"text"
);
19.
};
其中window.loadJS用来读取一个url的内容(这里是JavaScript文件),并使用SyntaxHighlighter高亮显示在页面。
window.highlight用来高亮显示某一行源代码,同时这里使用jQuery的animate函数来完成页面的平滑滚动。
由于这个页面是嵌入在父页面中的,所以接下来你会看到如何在父页面中操作这两个JavaScript函数。
父页面中的JavaScript定义
01.
<script type=
"text/javascript"
>
02.
function
onReady() {
03.
04.
selectGridRow();
05.
}
06.
function
selectGridRow() {
07.
var
grid = Ext.getCmp(
"<%= Grid1.ClientID %>"
);
08.
grid.getSelectionModel().on(
"rowselect"
,
function
(sm, rowIndex, record) {
09.
getMainWindow().highlight(parseInt(record.json[0].replace(/<.*?>/g,
""
)));
10.
});
11.
}
12.
function
getMainWindow() {
13.
return
Ext.query(
"iframe[name=main]"
)[0].contentWindow;
14.
}
15.
16.
</script>
其中getMainWindow用来获取IFrame的window实例。
而selectGridRow会在页面加载完毕后立即执行,用来在选中Grid的某一行时高亮显示右侧IFrame中的对应行的源代码(这里用到了上面提到的highlight函数)。
点击树节点的事件处理
还记得在上一章中,我们为Tree注册了OnNodeCommand="Tree1_NodeCommand",下面来看下此函数:
01.
protected
void
Tree1_NodeCommand(
object
sender, ExtAspNet.TreeCommandEventArgs e)
02.
{
03.
string
fileName = e.CommandName.Replace(
"/"
,
"_"
);
04.
if
(ViewState[
"CurrentFileName"
] !=
null
&& ViewState[
"CurrentFileName"
].ToString() == fileName)
05.
{
06.
return
;
07.
}
08.
ViewState[
"CurrentFileName"
] = fileName;
09.
string
errorstr = GetFileContent(String.Format(
"~/data/errors/{0}.json"
, fileName));
10.
JSONArray ja =
new
JSONArray(errorstr);
11.
DataTable table =
new
DataTable();
12.
table.Columns.Add(
"level"
,
typeof
(Int32));
13.
table.Columns.Add(
"line"
,
typeof
(Int32));
14.
table.Columns.Add(
"character"
,
typeof
(Int32));
15.
table.Columns.Add(
"reason"
,
typeof
(String));
16.
table.Columns.Add(
"evidence"
,
typeof
(String));
17.
foreach
(JSONArray error
in
ja.getArrayList())
18.
{
19.
DataRow row = table.NewRow();
20.
table.Rows.Add(row);
21.
row[0] = Convert.ToInt32(error[0]);
22.
row[1] = Convert.ToInt32(error[1]);
23.
row[2] = Convert.ToInt32(error[2]);
24.
row[3] = error[3].ToString();
25.
row[4] = error[4].ToString();
26.
}
27.
Grid1.DataSource = table;
28.
Grid1.DataBind();
29.
string
showSourceScript =
"(function(){getMainWindow().loadJS('data/source/"
+ fileName +
"');}).defer(100);"
;
30.
ExtAspNet.PageContext.RegisterStartupScript(showSourceScript);
31.
}
这里面有两个应用技巧:
注:ExtAspNet.PageContext.RegisterStartupScript是一个常用的函数,以后你会经常遇到。
在注册的脚本中,我们使用defer(100)来让这段脚本延迟一段执行,这是为了防止浏览器卡(因为同时绑定Grid和发起AJAX可能很耗资源)。
根据错误级别为Grid每一项添加文字颜色
对于非常严重的错误,需要标示文字颜色为红色,而对于不要严重的错误只需文字颜色为淡黄色就行了。
为了实现这一效果,我们有两种不同的方法都可以达到相同的目的。
1. 方法一,在Grid的RowDataBound事件做文章(这也是Asp.net的GridView控件常用的技巧)
01.
protected
void
Grid1_RowDataBound(
object
sender, ExtAspNet.GridRowEventArgs e)
02.
{
03.
// DataItem是行的数据源,
04.
// 如果数据源是DataTable/DataView/DataSet,则e.DataItem是DataRow
05.
// 如果数据源是List<MyClass>,则e.DataItem是MyClass
06.
// e.Values 是实际赋予此行每列的值,可以修改
07.
DataRow row = e.DataItem
as
DataRow;
08.
if
(row !=
null
)
09.
{
10.
int
level = Convert.ToInt32(row[
"level"
]);
11.
string
style = String.Empty;
12.
if
(level == 1)
13.
{
14.
style =
"color:#FF0000;"
;
15.
}
16.
else
17.
{
18.
style =
"color:#FF9900;"
;
19.
}
20.
for
(
int
i = 0; i < e.Values.Length; i++)
21.
{
22.
e.Values[i] = String.Format(
"<span style=\"{0}\">{1}</span>"
, style, e.Values[i]);
23.
}
24.
}
25.
}
2. 方法二,在Grid的PreRowDataBound事件做文章(这是ExtAspNet特有的事件)
需要特别注意的是,这里改变的是一列的属性(请细细品味是列的属性,不是某一行的属性)。
01.
protected
void
Grid1_PreRowDataBound(
object
sender, ExtAspNet.GridPreRowEventArgs e)
02.
{
03.
DataRow row = e.DataItem
as
DataRow;
04.
if
(row !=
null
)
05.
{
06.
int
level = Convert.ToInt32(row[
"level"
]);
07.
string
style = String.Empty;
08.
if
(level == 1)
09.
{
10.
style =
"color:#FF0000;"
;
11.
}
12.
else
13.
{
14.
style =
"color:#FF9900;"
;
15.
}
16.
foreach
(ExtAspNet.GridColumn column
in
Grid1.Columns)
17.
{
18.
ExtAspNet.BoundField field = column
as
ExtAspNet.BoundField;
19.
field.DataFormatString =
"<span style=\""
+ style +
"\">{0}</span>"
;
20.
}
21.
}
22.
}
关于Ext4JSLint的内容就先介绍到这,下一章我们会接着介绍AppBox。
下载全部源代码
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com
文章转载自:互联网面对“数字中国”建设和中国制造2025战略实施的机遇期,中车信息公司紧跟时代的步伐,以“集约化、专业化、标准化、精益化、一体化、平台化”为工作目标,大力推进信息服务、工业软件等核心产品及业务的发展。在慧都3D解决方案的实施下,清软英泰建成了多模型来源的综合轻量化显示平台、实现文件不失真的百倍压缩比、针对模型中的大模型文件,在展示平台上进行流畅展示,提升工作效率,优化了使用体验。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@evget.com
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
慧都科技 版权所有 Copyright 2003-
2025 渝ICP备12000582号-13 渝公网安备
50010702500608号