找回密码
 立即注册

QQ登录

只需一步,快速开始

iceman
社区贡献组   /  发表于:2013-6-3 13:37:00
61#
回复 59楼joseph.lee的帖子

Hi joseph.lee ,

经过之前沟通,希望使用点击事件加载数据,减少性能开销。

这边结合 json 和 wijmo 前端方法实现了异步数据的加载。请使用 Demo 测试。
实现思路为:抓取 C1TreeView 节点的点击事件,通过 json 取数据,在前台创建 C1TreeView 节点。

核心函数说明:
$("#C1TreeView1").c1treeview("add", { text: row["Node"], hasChildren: true, value: "level=0" + "=ID=" + row["ID"] }, index);

"add":设置操作为添加节点操作。
"text":设置节点文本信息。
"hasChildren":是否有子节点。
"value":level 确定从哪张数据表中取数据,ID 为节点在数据表中的 ID。



同时,请关注 IIS 设置认证模式为windows身份认证问题是否还会出现。

如果有其他问题,请随时和我联系。
谢谢
Richard Wang

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
joseph.lee
论坛元老   /  发表于:2013-6-5 11:33:00
62#

C1treeview JASON数据加载问题

C1treeview JASON数据加载问题:
1.开发程序的时候,发现页面加载很慢。大约要吃顿半分钟.
2.在Oepera上测试无法加载节点
3.在safari上测试的时候,报错.
以上均在windows认证模式下测试.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
joseph.lee
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-6-5 13:04:00
63#
回复 62楼joseph.lee的帖子

问题我已经查收,正在调试中。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-6-5 15:10:00
64#
回复 62楼joseph.lee的帖子

你好,

1.我使用 Fiddler4 可以抓取 Safari ,下载链接:http://fiddler2.com/get-fiddler 。可以尝试抓取 IIS 为 Windows 身份验证时错误信息。

2.后台获取数据时间测试:

  1.     Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest

  2.         '取数据计时器,单位毫秒
  3.      Dim timer As New Stopwatch()
  4.         timer.Start()

  5.         context.Response.ContentType = "text/plain"
  6.         Dim jsonStr As String = ""
  7.         Dim nodeinfo As String = context.Request.Params("nodeinfo")
  8.         If nodeinfo = "root" Then
  9.             jsonStr = GetRootLevel()
  10.         Else
  11.             jsonStr = GetOtherNodes(nodeinfo)
  12.         End If
  13.         context.Response.Write(jsonStr)

  14.         timer.Stop()
  15.         Dim time As Double = timer.ElapsedMilliseconds / 1000

  16.     End Sub
复制代码


前台获取数据时间测试:

  1.         //开始加载时间
  2.         var beforeload = (new Date()).getTime();

  3.         var clickedNodes = new Array();
  4.         window.WebForm_DoCallback = function() {

  5.         }
  6.         $(document).ready(function() {

  7.             GetFirstLevel();
  8.             $("#C1TreeView1").c1treeview({ nodeClick: addNodes });

  9.             //结束加载时间
  10.             var afterload = (new Date()).getTime();
  11.             var seconds = (afterload - beforeload) / 1000;
  12.             alert(seconds);
  13.         }
  14.         )
复制代码
回复 使用道具 举报
joseph.lee
论坛元老   /  发表于:2013-6-5 19:17:00
65#

測試時間結果圖片

測試時間結果圖片

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
joseph.lee
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-6-6 10:53:00
66#
回复 65楼joseph.lee的帖子

还有一个优化措施是,设置:

  1.         Me.C1TreeView1.EnableViewState = False
复制代码


2.我这边使用 Safari 浏览器测试没有报异常,如图:
和您确认两点信息:
a.通过以下代码设置的 value 是否成功设置:
  1. $("#C1TreeView1").c1treeview("add", { text: row["Node"], hasChildren: true, value: "level=0" + "=ID=" + row["ID"] }, index);
复制代码

b.levelandid 是否有值:
  1. var levelandid = item.options.value;
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-6-7 12:29:00
67#
回复 65楼joseph.lee的帖子

joseph.lee 你好,

C1TreeView 首次加载慢的原因是:
首次加载时会向前台 Render 7 个存储在 C1 DLL 内部的 js 文件和 3 个 css 文件。体积有 1.8M。导致速度慢。

这些文件中包含了 C1 所有控件使用的 CSS 样式和 JS 文件。包括您使用的 C1Upload、 C1TreeView 和 C1Tabs 的前台资源。

首次加载确实会受到影响,但是如果项目中使用多个 C1 控件,通过一次性加载会提高其他 C1控件的使用速度。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-6-7 15:46:00
68#
回复 67楼iceman的帖子

资源加载截图如下:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-6-7 15:49:00
69#
回复 62楼joseph.lee的帖子

请问 opera 无法加载节点的问题,当前系统的管理权限是?是否使用域帐户登录呢?
可以通过 opera 调试工具调试,看是否执行 GetFirstLevel 方法:


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
joseph.lee
论坛元老   /  发表于:2013-6-15 14:56:00
70#
使用你给的方式操作,效能也同样是一样的。为何要将所有的控件的JS和CSS都包在一起呢?毕竟一个项目也不一定都会用到所有的控件。应该分控件下载JS和css才对,而且js和css也应该压缩才对。1.8MB的流量太大了。若在手机上使用,则第一次使用完,后续压根就不能有流量使用了。系统的管理权限是管理员的权限,opera也是使用域帐号登录的。此C1treeview目前在demo上也只是加载一些节点而已,也未对节点做任何的操作,但是实际我们的项目却不是这么简单的,会给节点加载很多属性,并对属性和节点有很多的操作。
joseph.lee
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部