Silverlight融合ajax實現前後台資料互動

來源:互聯網
上載者:User

事出偶然,本來公司強調的是用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 。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.