找回密码
 立即注册

QQ登录

只需一步,快速开始

iceman
社区贡献组   /  发表于:2013-6-18 11:42:00
71#
回复 70楼joseph.lee的帖子

joseph 你好,

1.我这边会调查,看是否能单独加载或压缩相关资源文件。

2.请问是否使用 Oprea 调试工具调试?是否正常调用了GetFirstLevel 方法?
期待你的反馈。

谢谢
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-6-24 14:36:00
72#
回复 70楼joseph.lee的帖子

Joseph 您好,

感谢对我们产品的支持和评估,您提出的问题有助于产品性能和用户体验的提升。

Studio for ASP.NET Wijmo 包含四十多种不同控件,覆盖大多数开发企业内部应用控件。这些控件应用的 js 及 css 资源耦合度比较高。同时,我们一般建议用户尽量多的采用 Studio for ASP.NET Wijmo 控件,从而保持页面的样式统一,减少 Web 开发人员在样式上的工作开销,提高开发效率。所以一次性会加载所有 js 和 css 文件到前台来实现资源的复用。这些前端资源是从 dll 中动态获取并加载到前台的,目前我们还无法干预。

当然,单独加载控件的资源会提高加载速度是毋庸置疑的。我会把您的建议提交给产品组,如果在后续发布版本中得到改进,我会及时通知您。

如果有其他的建议,欢迎继续提出讨论。

谢谢
回复 使用道具 举报
joseph.lee
论坛元老   /  发表于:2013-7-8 15:32:00
73#
'''<summary>
    ''' dataTable转换成Json格式
    '''</summary>
    '''<param name="dt"></param>
    '''<returns></returns>
    Public Shared Function DataTable2Json(ByVal dt As System.Data.DataTable) As String
        Dim jsonBuilder As New StringBuilder()
        jsonBuilder.Append("{""Name"":""" &amp; dt.TableName &amp; """,""Rows")
        jsonBuilder.Append(""":[")
        For i As Integer = 0 To dt.Rows.Count - 1
            jsonBuilder.Append("{")
            For j As Integer = 0 To dt.Columns.Count - 1
                jsonBuilder.Append("""")
                jsonBuilder.Append(dt.Columns(j).ColumnName)
                jsonBuilder.Append(""":""")
                jsonBuilder.Append(dt.Rows(i)(j).ToString().Replace("""", "\"""))
                '对于特殊字符,还应该进行特别的处理。
                jsonBuilder.Append(""",")
            Next
            jsonBuilder.Remove(jsonBuilder.Length - 1, 1)
            jsonBuilder.Append("},")
        Next
        jsonBuilder.Remove(jsonBuilder.Length - 1, 1)
        jsonBuilder.Append("]")
        jsonBuilder.Append("}")
        Return jsonBuilder.ToString()
    End Function

    '''<summary>
    ''' DataSet转换成Json格式
    '''</summary>
    '''<param name="ds">DataSet</param>
    '''<returns></returns>
    Public Shared Function Dataset2Json(ByVal ds As System.Data.DataSet) As String
        Dim json As New StringBuilder()
        json.Append("{""Tables"":")
        json.Append("[")
        For Each dt As System.Data.DataTable In ds.Tables
            json.Append(DataTable2Json(dt))
            json.Append(",")
        Next
        json.Remove(json.Length - 1, 1)
        json.Append("]")
        json.Append("}")
        Return json.ToString()
    End Function

      经过查看你给的Demo,发现你采用了迭代取所有的节点一次性加载出来,这样子不能实现按需加载的功能,假若节点数据很多,而且节点的属性也很多的情况下,则加载会更慢。是否能做到异步和按需加载?同时我们想知道该 Studio for ASP.NET Wijmo 控件包所应用的 js 及 css 资源有多大的size?谢谢!
joseph.lee
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-7-8 16:12:00
74#
回复 73楼joseph.lee的帖子

joseph.lee  你好,

1.Demo 中去接节点的方式是:
取数据方式:首先取第一级节点,通过点击事件结合”一级节点“的 ID 来查找相应子菜单。这和 flytreeview 的取值方法相同。
加载属性方式:
$(&quot;#C1TreeView1&quot;).c1treeview(&quot;add&quot;, { text: row[&quot;Node&quot;], hasChildren: true, value: &quot;level=0&quot; + &quot;=ID=&quot; + row[&quot;ID&quot;] }, index);
通过以上代码在前台添加节点及属性。
请问您指的异步按需加载是否为:先加载节点,在点击时取其相应属性呢?

2.ASP.NET Wijmo 应用的前台资源大小为 1.85M。
回复 使用道具 举报
joseph.lee
论坛元老   /  发表于:2013-7-9 13:52:00
75#
Flytreeview的取值方法是只取節點及其下一級子節點,而不會再去取下一級的下一級節點。而你給的C1treeview確實循環和迭代把所有的節點都獲取展開了。我所指的異步按需加載不是取屬性,而是取子節點及其節點上綁定的屬性.
1.85M確實很大,針對一般.net程序來講,這個太大了。假若在手機上打開使用你們這個ASP.NET Wijmo的控件開發的程序,則流量肯定會不夠.
joseph.lee
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-7-9 15:45:00
76#
回复 75楼joseph.lee的帖子

joseph.lee 你好,

我使用的是 61# 中的 Demo。
实现思路是,每次只加载一级节点,通过点击再加载二级节点。
第一次调用 getdataset.ashx 服务 ProcessRequest 方法返回的节点信息如下:



从截图中可以看到,所取的都是第一级节点。
点击第二个“一级节点”,



第二次调用 getdataset.ashx 服务 ProcessRequest 方法返回的节点信息如下:



同样可以看出,只有二级节点。在您那边也可以 debug 跟下。看是否与我的结果相同。

本帖子中包含更多资源

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

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

无论是取节点和取节点上的属性,都可以通过 ID 异步加载实现。我们在后台做的只是取数据。post 到前台后我们通过 C1TreeView 前台的内置方法添加节点。
C1TreeView 前台方法可参考:http://wijmo.com/wiki/index.php/Tree

至于前台资源过大问题,短时间内无法解决,这次全球产品会议我会反馈,看能否在下个版本中修改。
回复 使用道具 举报
12345678
您需要登录后才可以回帖 登录 | 立即注册
返回顶部