DotNetNuke 与 JavaScript 控件的无缝集成

DotNetNuke网站上,可以使用许多优秀的 JavaScript 控件和库,但通常不会这么做,因为它们需要从服务器加载数据,如文本、JSON、XML 等格式。用户操作后,可能希望更新数据库中的数据,但又不想重新加载页面。那么,如何将数据传递给客户端脚本呢?使用 Visual Studio 会带来很大的开销:需要测试环境,必须计划部署等。如果网站规模较小,预算有限,那么可能不会对此感到满意。但有一种方法可以快速实现,无需编译、部署、测试环境等繁琐步骤。

要完成此操作,需要执行以下三个步骤:

  • 编写 SQL 代码
  • 创建服务器端代码,格式化数据并发送到客户端
  • 编写客户端代码,启动过程并将数据发送到 UI 控件

所有这些都可以轻松地使用DotNetNuke的基于浏览器的开发环境 - XsltDb 来完成。下面将展示两种从服务器向客户端传递数据的方法:使用AJAX和提供 URL。

使用 JavaScript 函数访问服务器

这是在客户端想要实现的:

getSomeDataFromServer(a, b, c, function(downloadedData){ someControl.data = downloadedData; });

某个函数发送一些参数到服务器,并在完成后调用回调函数。要创建这样的函数,使用 XsltDb。在需要此 JavaScript 函数的页面上放置一个新的 XsltDb 模块,并写入以下代码:

##handler: getUsers(searchKey) <xsl:copy-of select="mdo:sql('select UserID, DisplayName from {databaseOwner}[{objectQualifier}Users] where Username like @searchKey ', 'user', '@searchKey', mdo:request('searchKey'))"/>

就是这样!上面提到的三个步骤都完成了。

注意!这个模块必须是一个超级模块(代码编辑器上方的复选框),因为它直接访问数据库。这个函数通过 DisplayName 搜索用户。用法如下:

alert(getUsers('%bu%')); /* 同步 */ getUsers('%bu%', function(users){ /* 异步 */ alert(users); });

创建返回 XML 数据的 URL

再次,在页面上放置一个新的 XsltDb 模块。粘贴以下代码并检查“超级模块”选项:

<xsl:if test="mdo:request('service')"> <xsl:copy-of select="mdo:sql('select UserID, DisplayName from {databaseOwner}[{objectQualifier}Users] where Username like @searchKey ', 'user', '@searchKey', mdo:request('searchKey'))"/> </xsl:if>

在配置上方的别名字段中填写“users”。之后,可以按如下方式使用该服务:

$.get('/DesktopModules/XsltDb/ws.aspx?service=users&searchKey=' + escape('%bu%'), function(xml){ alert((new XMLSerializer()).serializeToString(xml)); });
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485