没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|其它|编辑:郝浩|2009-09-24 09:40:40.000|阅读 1364 次
概述:Ext4JSLint是使用ExtAspNet来展示JSLint-Toolkit检查结果的开源项目。 JSLint-Toolkit是一个使用Rhino和JSLint的开源项目,可以对一个文件夹中的所有JavaScript进行语法检查,并显示友好的检查结果。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
引子
Ext4JSLint是使用来展示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. else17. { 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. else13. { 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@fz165y.cn
文章转载自:互联网



接DevExpress原厂商通知,将于近日上调旗下产品授权价格,现在下单客户可享受优惠报价!
面对“数字中国”建设和中国制造2025战略实施的机遇期,中车信息公司紧跟时代的步伐,以“集约化、专业化、标准化、精益化、一体化、平台化”为工作目标,大力推进信息服务、工业软件等核心产品及业务的发展。在慧都3D解决方案的实施下,清软英泰建成了多模型来源的综合轻量化显示平台、实现文件不失真的百倍压缩比、针对模型中的大模型文件,在展示平台上进行流畅展示,提升工作效率,优化了使用体验。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@fz165y.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
星空最火知名网站