Silverlight融合ajax实现前后台数据交互_实用技巧

事出偶然,本来公司强调的是用WCF 做项目审批流程,WPF /E 增强用户体验;由于个人的无知与偷懒,我产生了天真的想法:用WPF/E 来做审批流程,这不是一举两得吗。
下面介绍的就是用Silverlight (微软在07 年9 月将WPF/E 更名为Silverlight )融合ajax 做的审批流程。界面上的审批流程从下向上包括3部分,部门审批,科技处审批,厂长审批。实现的功能是可以定制审批流程,比如审批流程是部门审批--> 厂长审批,也可以定制成科技处审批--> 厂长审批。定制的数据存在后台xml 文件中。
前台Silverlight 表现层语言xaml , 后台服务器脚本语言C# ,数据存储格式xml ,中间数据传输技术ajax 。
.Net中嵌入Silverlight Page 的方法是在aspx 中调用js 函数传递xaml 文件相对于服务器的路径,如下:

复制代码 代码如下:

<div style="width: 662px;height: 622px" id="SilverlightControlHost" >
<script type="text/javascript"><!--
createsL( 'workflow.xaml' );
// --></script>
</div>

函数调用Silverlight 的createObjectEx 方法指定xaml source 、parentElement 、events 等,相应代码如下:

复制代码 代码如下:

function createSL(xamlpage)
{
Silverlight.createObjectEx({
source: xamlpage,
parentElement: document.getElementById("SilverlightControlHost"),
id: "SilverlightControl",
properties: {
width: "100%",
height: "100%",
version: "1.1",
enableHtmlAccess: "true"
},
events: {
onLoad:OnLoaded
}
});
// Give the keyboard focus to the Silverlight control by default
document.body.onload = function() {
var silverlightControl = document.getElementById('SilverlightControl');
if (silverlightControl)
silverlightControl.focus();
}
}

还要做的工作是在xaml 后台cs 文件中[ Scriptable ] 表现层WPF 类(当初是Cavas),将该类注册为可脚本化对象(RegisterScriptableObject)和可脚本化event ,并且在js 的events 设定表现层中的event ,实现方法如下:
xaml代码:
[Scriptable]

复制代码 代码如下:

public partial class workflow : Canvas
{
public workflow()
{
WebApplication.Current.RegisterScriptableObject("wpfe", this);
}
......
[Scriptable]
public event EventHandler workflowFunc;
}

js代码:

复制代码 代码如下:

function OnLoaded(sender,args)
{
sender.Content.wpfe.workflowFunc = onWorkflow;
}

另外,如果js 调用xaml 中的可脚本化函数的方法是
var control = document.getElementById("SilverlightControl");
var onReturnWfResult = control.Content.wpfe;
将xaml 中数据传输给后台处理就用到ajax 技术了,在本例中是在onWorkflow 事件中定义XMLHttpRequest,然后通过该ajax 对象将数据传递到后台。该例中的后台脚本语言是C# ,数据接收方法是Request.Params 。

时间: 2025-01-03 22:32:30

Silverlight融合ajax实现前后台数据交互_实用技巧的相关文章

asp.net中javascript与后台c#交互_实用技巧

最近做一个小项目,网页中嵌入google maps,输入经纬度坐标可以定位地图位置并加注标记,点击标记获取远端摄像头数据并在视频窗口实现播放.在实际操作过程中,由于经纬度数据和视频登录的用户名密码数据均要从后台数据库中提取,而第三版的google maps api又是在javascript中实现的,因此不可避免的需要前端脚本与后台进行交互.由于是在asp.net中实现,故问题演化成asp.net中javascript与后台c#如何进行交互. C#代码与javaScript函数的相互调用主要有四个

asp.net使用AJAX实现无刷新分页_实用技巧

查询功能是开发中最重要的一个功能,大量数据的显示,我们用的最多的就是分页. 在ASP.NET 中有很多数据展现的控件,比如Repeater.GridView,用的最多的GridView,它同时也自带了分页的功能.但是我们知道用GridView来显示数据,如果没有禁用ViewState,页面的大小会是非常的大的.而且平时我们点击首页,下一页,上一页,尾页这些功能都是会引起页面回发的,也就是需要完全跟服务器进行交互,来回响应的时间,传输的数据量都是很大的. AJAX的分页可以很好的解决这些问题. 数

利用ASP.NET MVC和Bootstrap快速搭建个人博客之后台dataTable数据列表_实用技巧

jQuery dataTables 插件是一个优秀的表格插件,是后台工程师的福音!它提供了针对数据表格的排序.浏览器分页.服务器分页.查询.格式化等功能.dataTables 官网也提供了大量的演示和详细的文档进行说明,为了方便使用,这里进行详细说明. 去官网:https://www.datatables.net/ 下载最新版本是v1.10.12. 在页面引入: <link rel="stylesheet" href="~/Content_Admin/css/boots

一步一步学asp.net Ajax登录设计实现解析_实用技巧

任务需求:做一个登录,拥有自动记住账号和密码的功能,要保证安全性,ajax,无刷新,良好的用户体验.(母板页) 这是前台页面,要求实现用户登录 首先我们分析, 用户需求: 1. 登录以后,登录框隐藏,并且欢迎登录的框显示,并且,左上角登录的按钮消失,安全退出显示. 2. 如果选择记住帐号和密码,下次登录直接登录,并且保证安全性. 实现过程: 首先,登录的时候发出ajax请求,用户验证登录,登录以后,保存当前用户名和密码到cookies中,注意,密码要用md5加密,md5是根据用户的机器配置生成的

asp.net DataTable相关操作集锦(筛选,取前N条数据,去重复行,获取指定列数据等)_实用技巧

本文实例总结了asp.net DataTable相关操作.分享给大家供大家参考,具体如下: #region DataTable筛选,排序返回符合条件行组成的新DataTable或直接用DefaultView按条件返回 /// <summary> /// DataTable筛选,排序返回符合条件行组成的新DataTable或直接用DefaultView按条件返回 /// eg:SortExprDataTable(dt,"Sex='男'","Time Desc&quo

Asp.net配合easyui实现返回json数据实例_实用技巧

本文实例讲述了Asp.net配合easyui实现返回json数据的实现方法.分享给大家供大家参考.具体如下: 最近想用asp.net配合easyui开发一个小框架,然后再用到easyui的combobox的时候出现了一个问题,总所周知,easyui的文档上给出的combobox的格式是 复制代码 代码如下: <input class="easyui-combobox"               name="language"              dat

asp.net+ajax的Post请求实例_实用技巧

本文实例讲述了asp.net+ajax的Post请求的实现方法.分享给大家供大家参考.具体如下: 复制代码 代码如下: //一个ajax的Post请求       function submitInfo() {          $(".warn").hide(); //刚提交的时候隐藏错误的信息          var data = $("#formData").serialize(); //将表单的数据通过序列化表单值,创建 URL 编码文本字符串.形成一个表

asp.net Repeater之非常好的数据分页_实用技巧

分页控件源代码如下: 复制代码 代码如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Collections; #region Assembly Resource Attribut

div弹出层的ajax登录(Jquery版+c#)_实用技巧

页面初始化,界面如图所示: Server name文本框获取焦点时候,界面如图所示(这里可以改成你登录的验证码): 可以加载SQL Server服务列表,也是我的简易SQL查询分析器评论中静夜妙思给予的方法,非常感谢! 加载列表如下图所示: 可以随意地点击添加到Server name中,登录时截图所示: 文本框验证都写好了!还有Authentication验证方式,windows验证下面Login,Password文本框禁掉!由于时间原因,不上图了 demo.html(全部前台代码,js/css