WCF RIA Service新增數據後前臺刷新數據

看帖子裏有人要求我寫一個在使用WCF RIA Service更新數據後Datagrid或者是其它控件中刷新數據的例子。

可能對於初學者或者是那些對異步數據傳輸不是很瞭解的人來說,有點費解。

先說明下Update的情況:

你必須要明白的是在Silverlight或者是WPF中數據綁定有三種方式。而你需要在更新Datasource後前臺的datagrid也同步更新請千萬記得Binding的方式是twoway。否則你的修改只有在刷新頁面後纔在datagrid中顯示。

例如:我在選中某條記錄時讓對應的一個dataform顯示它的詳細信息,因爲dataform是有編輯模板的,我們可以在模板中定義一個button,當修改完成後點擊button來把修改後的結果使用RIA Service更新到數據庫。如果你的datagrid綁定RIA Service不是雙向的,那它不會被更新。

再來就是insert的情況:

這個你就需要完全理解RIA Service是如何從服務器端請求數據的。 前面我有文章介紹過,可以讓每次的請求數據設置爲10條,20條等等。這樣的優點是性能不需要擔憂,但是同時我們會發現當把某條心記錄插入數據庫時,使用RIA ServiceDatagrid等根本不理會這件事,就算你是twoway綁定也沒用。

如上圖所示,dagrid根本就不知道它們在交換數據。所以我們需要做的就是如何通知到Datagrid有新數據更新了,你是否需要操作。

大家應該都會想到那在submitchange發生後重新load數據不就行了。沒錯,這是個最基本的方法,也是最容易的。

需要做的就是你在Domain Service取數據時一定記得按照自增ID降序排列取幾十條,或者是按照時間字段降序來取數據。。這種方法是個瞞天過海的方式。我永遠都會把你最新更新或者是其它客戶端更新的記錄該請求到客戶端。

如上圖所示,我每次請求30條數據,而且是降序productID來取數據的。

這裏就涉及到搜索的功能了。。。

我需要使用搜索來驗證是否我剛纔更新的數據已經顯示在現在的datagrid中了。

如果使用是上面這種方式你完全可以使用Ria Servicefilter功能來帥選數據。具體的呢可以看看文檔或者看看我以前的文章。

另外我覺得可行的一種方式是一個不用每次在submitchange後都重新調用Service來更新datagrid,而是使用搜索框失去焦點後我們開始從服務器端拿數據。

這時就需要在服務器端寫一個查詢方法,比如是通過傳入一個productname來查詢到對應的product,然後把查詢結果綁定到Datagrid,如果查詢文本框爲空,然後失去焦點,我們就在服務器端判斷下,然後給客戶端返回100或者50條數據。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章