去年10-28號,我發布了一篇文章《海王星給你好看!FineUI v4.0公測版發布暨《你找BUG我送書》活動開始》,標志著FineUI開始向4.0版本邁進。經過4個月3個公測版的錘煉,今天我高興的宣布FineUI v4.0正式版發布了!
關于FineUI
基于 ExtJS 的開源 ASP.NET 控件庫。FineUI的使命
創建 No JavaScript,No CSS,No UpdatePanel,No ViewState,No WebServices 的網站應用程序。支持的瀏覽器
IE 8.0+、Chrome、Firefox、Opera、Safari授權協議
Apache License v2.0
注:ExtJS 庫在 GPL v3 協議下發布(http://www.sencha.com/license)。
相關鏈接
首頁:http://fineui.com/
論壇:http://fineui.com/bbs/
示例:http://fineui.com/demo/
下載:http://fineui.codeplex.com/
查看版本更新日志:http://fineui.com/version/
主要改動點
DropDownList默認可以為空
最大好處是方便使用Required屬性做客戶端驗證,見下圖:
FineUI v4 對必填項 - 審批人 - 的處理更加合理,實際效果更加好。
表格的 EnableRowNumber 屬性變成了一個真正的列
在FineUI v3 中,頁面代碼如下:
<x:Grid ID="Grid1" Title="表格" Width="800px" PageSize="10" ShowBorder="true" ShowHeader="true" AutoHeight="true" AllowPaging="true" runat="server" EnableCheckBoxSelect="True" DataKeyNames="Id" IsDatabasePaging="true" OnPageIndexChange="Grid1_PageIndexChange" EnableRowNumber="True" EnableRowNumberPaging="true" RowNumberWidth="24px"> <Columns> <x:BoundField Width="150px" DataField="Id" HeaderText="ID" /> <x:BoundField ExpandUnusedSpace="true" DataField="EntranceTime" HeaderText="時間" /> </Columns> </x:Grid>
在FineUI v4 中,我們需要指定第一列為 RowNumberField,同時可以通過Width來指定列的寬度:
<x:Grid ID="Grid1" Title="表格" EnableFrame="true" EnableCollapse="true" Width="800px" PageSize="10" ShowBorder="true" ShowHeader="true" AllowPaging="true" runat="server" EnableCheckBoxSelect="True" DataKeyNames="Id" IsDatabasePaging="true" OnPageIndexChange="Grid1_PageIndexChange"> <Columns> <x:RowNumberField EnablePagingNumber="true" Width="30px" /> <x:BoundField Width="150px" DataField="Id" HeaderText="ID" /> <x:BoundField ExpandUnusedSpace="true" DataField="EntranceTime" HeaderText="時間" /> </Columns> </x:Grid>
分組表頭標簽重定義
FineUI v3 中的分組表頭有一些限制,比如大家最常問到的如何實現分組表頭的合并。在FineUI v4中可以輕松實現:
表格的 SortColumnIndex 屬性被 SortField 屬性替代
表格的 SortField 和 列的 SortField 相對應,在 ASPX 頁面需要把 SortColumnIndex 去掉。
同時還要注意后臺排序事件同樣使用表格的 SortField 屬性:
protected void Grid1_Sort(object sender, FineUI.GridSortEventArgs e) { Grid1.SortDirection = e.SortDirection; Grid1.SortField = e.SortField; BindGrid(); }
刪除樹節點的 SingleClickExpand 屬性
由于extjs v4.2不再支持此屬性,我們通過變通的方法,為樹控件增加 EnableSingleClickExpand 屬性,來達到類似的效果。
客戶端腳本的改變
函數onReady更改為F.ready(fn)
函數onAjaxReady更改為F.ajaxReady(fn)
函數X.util.beforeAjaxPostBackScript更改為F.beforeAjax(fn)
這樣做的好處是可以多次注冊事件,而多次注冊的事件會按照順序執行。這是FineUI v3.0所不支持的。
表格合計行的支持
表格合計行在 FineUI v4.0中默認支持,可以通過 SummaryPosition 屬性來控制合計行的顯示問題。而在 FineUI v3.0中則要寫自定義JS來完成。
后臺設置合計行數據也很簡單,只需要設置 SummaryData 屬性即可:
private void OutputSummaryData() { DataTable source = GetDataTable2(); float donateTotal = 0.0f; float feeTotal = 0.0f; foreach (DataRow row in source.Rows) { donateTotal += Convert.ToInt32(row["Donate"]); feeTotal += Convert.ToInt32(row["Fee"]); } JObject summary = new JObject(); summary.Add("major", "全部合計"); summary.Add("fee", feeTotal.ToString("F2")); summary.Add("donate", donateTotal.ToString("F2")); Grid1.SummaryData = summary; }
通過簡單的JS添加工具圖標和菜單
這個效果雖然沒有默認的控件支持,但只需一段JavaScript代碼即可搞定:
// 添加工具圖標,并在點擊時顯示上下文菜單 leftRegion.addTool({ type: 'gear', tooltip: '系統設置', regionTool: true, handler: function (event, toolEl, panelHeader) { menuSettings.showBy(this); } });
表格右鍵菜單
通過組合 Menu 服務器控件和一段簡單的JavaScript代碼,即可實現上述效果:
F(gridID).on('beforeitemcontextmenu', function (view, record, item, index, event) { F(menuID).showAt(event.getXY()); event.stopEvent(); });
<f:Menu id="Menu1" runat="server"> <f:MenuButton ID="btnSelectRows" EnablePostBack="false" runat="server" Text="全選行"> </f:MenuButton> <f:MenuButton ID="btnUnselectRows" EnablePostBack="false" runat="server" Text="取消行"> </f:MenuButton> </f:Menu>
海王星主題
海王星主題是 FineUI v4.0 最大的改變,現在就到官方示例一探究竟:http://fineui.com/demo/
《FineUI3to4一鍵升級工具》
由于 FineUI v4 和 FineUI v3.x 差異很大,有很多不兼容的地方,因此我們提供了一鍵升級工具供大家使用。
《FineUI3to4一鍵升級工具》專供郵件訂閱用戶,如果您還未訂閱 FineUI 官方網站,請點擊如下鏈接訂閱:
http://list.qq.com/cgi-bin/qf_invite?id=79abf8372c76e63b0d88931760427245dbfee6a461c0bb1a
使用《FineUI3to4一鍵升級工具》來升級官方示例,總共進行了 500 多次規則替換,從而大大減輕了手工升級的工作量,參看如下升級日志:
《FineUI3to4一鍵升級工具》 v1.0 by sanshi
Web.config
>>>[add] 修改節點的tagPrefix屬性為f
>>>[add] 刪除內置資源配置項res.axd
>>>[FineUI] 刪除節點的屬性EnableBigFont
.\default.aspx
>>>[Window(windowSourceCode)] 向節點添加屬性Hidden,值為true
>>>[Window(windowSourceCode)] 刪除節點的屬性Popup
>>>[Region(Region2)] 刪除節點的屬性EnableLargeHeader
>>>[Region(Region2)] 刪除節點的屬性EnableSplitTip
>>>[Region(Region2)] 刪除節點的屬性CollapseMode
省略號。。。。。。。
省略號。。。。。。。
省略號。。。。。。。
省略號。。。。。。。
省略號。。。。。。。
省略號。。。。。。。
.\autocomplete\custom_display.aspx
>>>將腳本中字符串function onReady() {}替換為F.ready(function() {});
>>>[SimpleForm(SimpleForm1)] 刪除節點的屬性EnableBackgroundColor
.\autocomplete\email.aspx
>>>將腳本中字符串function onReady() {}替換為F.ready(function() {});
>>>[SimpleForm(SimpleForm1)] 刪除節點的屬性EnableBackgroundColor
.\autocomplete\inline.aspx
>>>將腳本中字符串function onReady() {}替換為F.ready(function() {});
>>>[SimpleForm(SimpleForm1)] 刪除節點的屬性EnableBackgroundColor
.\autocomplete\multi_values.aspx
>>>將腳本中字符串function onReady() {}替換為F.ready(function() {});
>>>[SimpleForm(SimpleForm1)] 刪除節點的屬性EnableBackgroundColor
.\autocomplete\multi_values_remote.aspx
>>>將腳本中字符串function onReady() {}替換為F.ready(function() {});
>>>[SimpleForm(SimpleForm1)] 刪除節點的屬性EnableBackgroundColor
.\autocomplete\multi_values_remote.aspx.cs
.\autocomplete\remote_with_cache.aspx
>>>將腳本中字符串function onReady() {}替換為F.ready(function() {});
>>>[SimpleForm(SimpleForm1)] 刪除節點的屬性EnableBackgroundColor
.\aspnet\aspnet.aspx
>>>[ContentPanel(ContentPanel1)] 刪除節點的屬性EnableBackgroundColor
.\aspnet\ckeditor.aspx
>>>[ContentPanel(ContentPanel1)] 刪除節點的屬性EnableBackgroundColor
.\aspnet\fckeditor.aspx
>>>[ContentPanel(ContentPanel1)] 刪除節點的屬性EnableBackgroundColor
.\aspnet\ueditor.aspx
>>>將腳本中字符串X.*.替換為F.*.
>>>將腳本中字符串function onReady() {}替換為F.ready(function() {});
>>>將腳本中字符串F.util.beforeAjaxPostBackScript = function () {};替換為F.beforeAjax(function() {});
>>>[ContentPanel(ContentPanel1)] 刪除節點的屬性EnableBackgroundColor
.\aspnet\ueditor_two.aspx
>>>將腳本中字符串X.*.替換為F.*.
>>>將腳本中字符串function onReady() {}替換為F.ready(function() {});
>>>將腳本中字符串F.util.beforeAjaxPostBackScript = function () {};替換為F.beforeAjax(function() {});
>>>[ContentPanel(ContentPanel1)] 刪除節點的屬性EnableBackgroundColor
>>>[ContentPanel(ContentPanel2)] 刪除節點的屬性EnableBackgroundColor
>>>[SimpleForm(SimpleForm1)] 刪除節點的屬性EnableBackgroundColor
.\accordion\accordion.aspx
>>>[Accordion(Accordion1)] 修改節點的ActiveIndex屬性名稱為ActivePaneIndex
.\accordion\accordion_links.aspx
>>>將腳本中字符串Ext.getCmp(替換為F(
.\js\default.js
>>>將腳本中字符串Ext.getCmp(替換為F(
>>>將腳本中字符串X.*.替換為F.*.
>>>將腳本中字符串.x_show(替換為.f_show(
>>>將腳本中字符串function onReady() {}替換為F.ready(function() {});
轉換完成,共應用轉換規則524次。
以下內容未能自動完成,請手工調整
========================================================
[.\other\formitemclass.aspx.cs]請手工刪除FormItemClass相關代碼
[.\layout\row.aspx][Panel(Panel2)]行布局已經刪除,請考慮使用HBox或者VBox布局
[.\layout\row.aspx][Panel(Panel5)]行布局已經刪除,請考慮使用HBox或者VBox布局
[.\grid\grid_groupheader_sort.aspx][Grid(Grid1)]表格的SortColumn屬性已經不存在,請手工替換為SortField
[.\accordion\accordion.aspx.cs]你可能需要手工將ActiveIndex改為ActivePaneIndex
推薦本文
你的鼓勵是我們前進的動力,請通過如下三種方式鼓勵作者:
1. 關注博客
2. 推薦本文
3. 發表評論
文章列表