原創|其它|編輯:郝浩|2009-09-24 09:35:34.000|閱讀 971 次
概述:前一段時間發了一篇文章基于ExtAspNet的開源項目 - Ext4JSLint,這個東東也算是我拿ExtAspNet做的第一個小應用。還是有一些應用方面的技巧,接下來的幾篇文章就和大家分享一下。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
引子
前一段時間發了一篇文章,這個東東也算是我拿ExtAspNet做的第一個小應用。還是有一些應用方面的技巧,接下來的幾篇文章就和大家分享一下。
Ext4JSLint是使用來展示的結果。
JSLint-Toolkit是一個使用Rhino和JSLint的小項目,可以對一個文件夾中的所有JavaScript進行語法檢查,并顯示友好的檢查結果。
我曾寫了來介紹。
界面截圖
整體來看,整個頁面被分成四個部分:
ASPX標簽定義
01.
<
ext:PageManager
AutoSizePanelID
=
"BorderLayout1"
runat
=
"server"
></
ext:PageManager
>
02.
<
ext:BorderLayout
ID
=
"BorderLayout1"
ShowBorder
=
"false"
runat
=
"server"
>
03.
<
Regions
>
04.
<
ext:Region
ID
=
"Region1"
Height
=
"60px"
ShowBorder
=
"false"
ShowHeader
=
"false"
05.
Position
=
"Top"
Layout
=
"Fit"
runat
=
"server"
>
06.
<
Toolbars
>
07.
<
ext:Toolbar
ID
=
"Toolbar1"
Position
=
"Bottom"
runat
=
"server"
>
08.
<
Items
>
09.
<
ext:Button
ID
=
"btnExpandAll"
IconUrl
=
"~/images/expand-all.gif"
Text
=
"Expand All"
10.
EnablePostBack
=
"false"
runat
=
"server"
>
11.
</
ext:Button
>
12.
<
ext:Button
ID
=
"btnCollapseAll"
IconUrl
=
"~/images/collapse-all.gif"
Text
=
"Collapse All"
13.
EnablePostBack
=
"false"
runat
=
"server"
>
14.
</
ext:Button
>
15.
<
ext:ToolbarSeparator
ID
=
"ToolbarSeparator1"
runat
=
"server"
>
16.
</
ext:ToolbarSeparator
>
17.
<
ext:Button
ID
=
"btnCriticalErrors"
IconUrl
=
"~/images/exclamation.png"
Text
=
"Only Critical Errors"
18.
OnClick
=
"btnCriticalErrors_Click"
EnablePress
=
"true"
runat
=
"server"
>
19.
</
ext:Button
>
20.
</
Items
>
21.
</
ext:Toolbar
>
22.
</
Toolbars
>
23.
<
Items
>
24.
<
ext:ContentPanel
ShowBorder
=
"false"
ShowHeader
=
"false"
BodyStyle
=
"background-color:#1C3E7E;"
25.
ID
=
"ContentPanel1"
runat
=
"server"
>
26.
<
div
style
=
"font-size: 20px; color:White; font-weight:bold; padding: 3px 10px; "
>
27.
<
a
href
=
"./default.aspx"
style
=
"color:White;"
>Ext4JSLint</
a
>
28.
</
div
>
29.
</
ext:ContentPanel
>
30.
</
Items
>
31.
</
ext:Region
>
32.
<
ext:Region
ID
=
"regionLeft"
Split
=
"true"
Width
=
"200px"
ShowHeader
=
"false"
EnableCollapse
=
"true"
33.
Layout
=
"Fit"
Position
=
"Left"
runat
=
"server"
>
34.
<
Items
>
35.
<
ext:Tree
runat
=
"server"
ID
=
"Tree1"
ShowBorder
=
"false"
ShowHeader
=
"false"
AutoScroll
=
"true"
36.
EnableArrows
=
"true"
OnNodeCommand
=
"Tree1_NodeCommand"
>
37.
</
ext:Tree
>
38.
</
Items
>
39.
</
ext:Region
>
40.
<
ext:Region
ID
=
"regionCenter"
ShowHeader
=
"false"
Position
=
"Center"
Layout
=
"Fit"
runat
=
"server"
>
41.
<
Items
>
42.
<
ext:Grid
ID
=
"Grid1"
runat
=
"server"
ShowBorder
=
"false"
ShowHeader
=
"false"
EnableCheckBoxSelect
=
"false"
43.
EnableRowNumber
=
"false"
EnableMultiSelect
=
"false"
OnRowDataBound
=
"Grid1_RowDataBound"
44.
OnPreRowDataBound
=
"Grid1_PreRowDataBound"
Title
=
"Grid"
>
45.
<
Columns
>
46.
<
ext:BoundField
DataField
=
"line"
Width
=
"45px"
HeaderText
=
"Line"
/>
47.
<
ext:BoundField
DataField
=
"reason"
ExpandUnusedSpace
=
"true"
HeaderText
=
"Reason"
/>
48.
</
Columns
>
49.
</
ext:Grid
>
50.
</
Items
>
51.
</
ext:Region
>
52.
<
ext:Region
ID
=
"regionRight"
ShowHeader
=
"false"
Split
=
"true"
IFrameUrl
=
"./source.htm"
53.
EnableIFrame
=
"true"
IFrameName
=
"main"
Position
=
"Right"
Width
=
"400px"
runat
=
"server"
>
54.
</
ext:Region
>
55.
</
Regions
>
56.
</
ext:BorderLayout
>
經過前幾篇文章對的介紹,相信大家對這段ASPX標簽的聲明并不陌生。
如果你對這里的標簽不熟悉,可以參考這一篇文章:
展開全部與折疊全部
在以上標簽聲明中,大家應該注意到btnExpandAll和btnCollapseAll兩個按鈕都定義了屬性EnablePostBack="false",也就是說點擊這兩個按鈕不會產生PostBack事件。
我們需要在客戶端使用JavaScript完成這一任務。
---------------慢,你不是號稱“No JavaScript”么?
是的,這個任務也完全可以回發頁面來更新左側樹,因為整個過程是AJAX的所以用戶體驗也很好。
我們這里只是提供實現問題的另一個途徑,因為不需要服務器交互時,JavaScript實現的效果更好。
來看下JavaScript的定義:
01.
function
onReady() {
02.
expandCollapseTree();
03.
}
04.
function
expandCollapseTree() {
05.
var
tree = Ext.getCmp(
"<%= Tree1.ClientID %>"
);
06.
var
btnExpandAll = Ext.getCmp(
"<%= btnExpandAll.ClientID %>"
);
07.
btnExpandAll.on(
"click"
,
function
() {
08.
tree.expandAll();
09.
});
10.
var
btnCollapseAll = Ext.getCmp(
"<%= btnCollapseAll.ClientID %>"
);
11.
btnCollapseAll.on(
"click"
,
function
() {
12.
tree.collapseAll();
13.
});
14.
}
其中onReady函數是ExtAspNet的一個命名約定,以這個名稱命名的函數會在頁面加載完成后執行,我們可以看到頁面源代碼中有相關定義:
Ext.getCmp函數是extjs中定義的,用于由節點ID獲取此節點表示的extjs組件,同樣expandAll和collapseAll是樹示例的方法,這也是在extjs中定義的。
ExtAspNet幫幫忙,我不想寫JavaScript!
------No Problem!
注:這一小節的內容需要ExtAspNet版本大于 v2.1.1,目前可以從下載最新版本并編譯。
不想寫JavaScript,而又想實現在客戶端折疊和展開所有樹的節點(我可不想因為這個簡單的功能來回發頁面),好辦:
01.
protected
void
Page_Load(
object
sender, EventArgs e)
02.
{
03.
if
(!IsPostBack)
04.
{
05.
LoadData(
true
);
06.
}
07.
}
08.
private
void
LoadData(
bool
showAllErrors)
09.
{
10.
btnExpandAll.OnClientClick = Tree1.GetExpandAllNodesReference();
11.
btnCollapseAll.OnClientClick = Tree1.GetCollapseAllNodesReference();
12.
}
是不是很簡單,兩句C#代碼就把那么長一段JavaScript搞定。
其實這并不神秘,只是ExtAspNet幫你完成了手工寫JavaScript代碼的任務,看下HTML源代碼你就明白了:
下一章將講述怎么由JSON文件生成左側樹控件。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:博客園