ComponentArt 的腳本注冊判斷還是很全面的,判斷了各種情況,在控件開發學習中還是很值得借鑒的
一樣畫葫蘆練手做了幾個簡單的控件:
1.STextBox =>增加幾個屬性,隻是為了拼Sql的時候字元轉義友善些(TrimedText,SqlText,SqlTrimedText)
2.SButton = > 增加幾個小屬性,象confirm,waitmessage...
3.SImgButton = > 增加滑鼠滑過,離開,按下的圖檔設定
4.SXpButton = > 按模闆自動生成三組效果圖檔(滑鼠滑過,離開,按下)
5.SGroupBox =>GroupBox 隻有Caption屬性,不過設計時寫的不好(直接使用了系統的Designer).不直覺,不過我自己夠用了,改天有空再學習修改Designer
注冊代碼源代碼:
1
[控件學習-3]ComponentArt 的腳本注冊機制學習 2
[控件學習-3]ComponentArt 的腳本注冊機制學習
[控件學習-3]ComponentArt 的腳本注冊機制學習 /**//// <summary>
3
[控件學習-3]ComponentArt 的腳本注冊機制學習 /// 繪制全局腳本
4
[控件學習-3]ComponentArt 的腳本注冊機制學習 /// </summary>
5
[控件學習-3]ComponentArt 的腳本注冊機制學習 /// <param name="output"></param>
6
[控件學習-3]ComponentArt 的腳本注冊機制學習 /// <param name="sDefaultPath"></param>
7
[控件學習-3]ComponentArt 的腳本注冊機制學習 /// <param name="sScriptFile"></param>
8
[控件學習-3]ComponentArt 的腳本注冊機制學習 protected void WriteGlobalClientScript(HtmlTextWriter output, string sDefaultPath, string sScriptFile)
9
[控件學習-3]ComponentArt 的腳本注冊機制學習
[控件學習-3]ComponentArt 的腳本注冊機制學習
[控件學習-3]ComponentArt 的腳本注冊機制學習 {
10
[控件學習-3]ComponentArt 的腳本注冊機制學習 string sScript = GenerateClientScriptBlock(sDefaultPath, sScriptFile);
11
[控件學習-3]ComponentArt 的腳本注冊機制學習 string sInstanceId = sScriptFile;
12
[控件學習-3]ComponentArt 的腳本注冊機制學習 13
[控件學習-3]ComponentArt 的腳本注冊機制學習 output.Write(sScript);
14
[控件學習-3]ComponentArt 的腳本注冊機制學習 }
15
[控件學習-3]ComponentArt 的腳本注冊機制學習 16
[控件學習-3]ComponentArt 的腳本注冊機制學習 17
[控件學習-3]ComponentArt 的腳本注冊機制學習 18
[控件學習-3]ComponentArt 的腳本注冊機制學習 19
[控件學習-3]ComponentArt 的腳本注冊機制學習
[控件學習-3]ComponentArt 的腳本注冊機制學習 20
[控件學習-3]ComponentArt 的腳本注冊機制學習 /// 擷取腳本塊
21
[控件學習-3]ComponentArt 的腳本注冊機制學習 22
[控件學習-3]ComponentArt 的腳本注冊機制學習 23
[控件學習-3]ComponentArt 的腳本注冊機制學習 24
[控件學習-3]ComponentArt 的腳本注冊機制學習 /// <returns></returns>
25
[控件學習-3]ComponentArt 的腳本注冊機制學習 private string GenerateClientScriptBlock(string sDefaultPath, string sScriptFile)
26
[控件學習-3]ComponentArt 的腳本注冊機制學習
[控件學習-3]ComponentArt 的腳本注冊機制學習
[控件學習-3]ComponentArt 的腳本注冊機制學習 27
[控件學習-3]ComponentArt 的腳本注冊機制學習 string sScript = string.Empty;
28
[控件學習-3]ComponentArt 的腳本注冊機制學習 string sScriptLocation = string.Empty;
29
[控件學習-3]ComponentArt 的腳本注冊機制學習 //相應版本 主版本+副版本+編譯版本
30
[控件學習-3]ComponentArt 的腳本注冊機制學習 string sVersionString =
31
[控件學習-3]ComponentArt 的腳本注冊機制學習 Assembly.GetExecutingAssembly().GetName().Version.Major.ToString() + "_" +
32
[控件學習-3]ComponentArt 的腳本注冊機制學習 Assembly.GetExecutingAssembly().GetName().Version.Minor.ToString() + "_" +
33
[控件學習-3]ComponentArt 的腳本注冊機制學習 Assembly.GetExecutingAssembly().GetName().Version.Build.ToString();
34
[控件學習-3]ComponentArt 的腳本注冊機制學習 35
[控件學習-3]ComponentArt 的腳本注冊機制學習 if(this.ClientScriptLocation != string.Empty)//指定腳本位置
36
[控件學習-3]ComponentArt 的腳本注冊機制學習
[控件學習-3]ComponentArt 的腳本注冊機制學習
[控件學習-3]ComponentArt 的腳本注冊機制學習 37
[控件學習-3]ComponentArt 的腳本注冊機制學習 sScriptLocation = Path.Combine(Path.Combine(this.ClientScriptLocation, sVersionString), sScriptFile).Replace("\\", "/");
38
[控件學習-3]ComponentArt 的腳本注冊機制學習 }
39
[控件學習-3]ComponentArt 的腳本注冊機制學習 else
40
[控件學習-3]ComponentArt 的腳本注冊機制學習
[控件學習-3]ComponentArt 的腳本注冊機制學習
[控件學習-3]ComponentArt 的腳本注冊機制學習 41
[控件學習-3]ComponentArt 的腳本注冊機制學習 // First, try application config variable
42
[控件學習-3]ComponentArt 的腳本注冊機制學習 //首先,先從程式配置檔案讀取web.config
43
[控件學習-3]ComponentArt 的腳本注冊機制學習 string sLocation = ConfigurationSettings.AppSettings["ComponentArt.Web.UI.ClientScriptLocation"];
44
[控件學習-3]ComponentArt 的腳本注冊機制學習 if(sLocation != null)
45
[控件學習-3]ComponentArt 的腳本注冊機制學習
[控件學習-3]ComponentArt 的腳本注冊機制學習
[控件學習-3]ComponentArt 的腳本注冊機制學習 46
[控件學習-3]ComponentArt 的腳本注冊機制學習 //腳本位址
47
[控件學習-3]ComponentArt 的腳本注冊機制學習 sScriptLocation = Path.Combine(Path.Combine(sLocation, sVersionString), sScriptFile).Replace("\\", "/");
48
[控件學習-3]ComponentArt 的腳本注冊機制學習 49
[控件學習-3]ComponentArt 的腳本注冊機制學習 50
[控件學習-3]ComponentArt 的腳本注冊機制學習 // Next, try server root
51
[控件學習-3]ComponentArt 的腳本注冊機制學習 //IIS根目錄
52
[控件學習-3]ComponentArt 的腳本注冊機制學習 if(sScriptLocation == string.Empty)
53
[控件學習-3]ComponentArt 的腳本注冊機制學習
[控件學習-3]ComponentArt 的腳本注冊機制學習
[控件學習-3]ComponentArt 的腳本注冊機制學習 54
[控件學習-3]ComponentArt 的腳本注冊機制學習 try
55
[控件學習-3]ComponentArt 的腳本注冊機制學習
[控件學習-3]ComponentArt 的腳本注冊機制學習
[控件學習-3]ComponentArt 的腳本注冊機制學習 56
[控件學習-3]ComponentArt 的腳本注冊機制學習 string sStandardRootClientScriptPath = Path.Combine(Path.Combine("/componentart_webui_client", sVersionString), sScriptFile).Replace("\\", "/");
57
[控件學習-3]ComponentArt 的腳本注冊機制學習 58
[控件學習-3]ComponentArt 的腳本注冊機制學習 if(File.Exists(Context.Server.MapPath(sStandardRootClientScriptPath)))
59
[控件學習-3]ComponentArt 的腳本注冊機制學習
[控件學習-3]ComponentArt 的腳本注冊機制學習
[控件學習-3]ComponentArt 的腳本注冊機制學習 60
[控件學習-3]ComponentArt 的腳本注冊機制學習 sScriptLocation = sStandardRootClientScriptPath;
61
[控件學習-3]ComponentArt 的腳本注冊機制學習 62
[控件學習-3]ComponentArt 的腳本注冊機制學習 }
63
[控件學習-3]ComponentArt 的腳本注冊機制學習
[控件學習-3]ComponentArt 的腳本注冊機制學習 catch
[控件學習-3]ComponentArt 的腳本注冊機制學習 {}
64
[控件學習-3]ComponentArt 的腳本注冊機制學習 }
65
[控件學習-3]ComponentArt 的腳本注冊機制學習 66
[控件學習-3]ComponentArt 的腳本注冊機制學習 // If failed, try application root
67
[控件學習-3]ComponentArt 的腳本注冊機制學習 //程式根目錄
68
[控件學習-3]ComponentArt 的腳本注冊機制學習 69
[控件學習-3]ComponentArt 的腳本注冊機制學習
[控件學習-3]ComponentArt 的腳本注冊機制學習
[控件學習-3]ComponentArt 的腳本注冊機制學習 70
[控件學習-3]ComponentArt 的腳本注冊機制學習 71
[控件學習-3]ComponentArt 的腳本注冊機制學習
[控件學習-3]ComponentArt 的腳本注冊機制學習
[控件學習-3]ComponentArt 的腳本注冊機制學習 72
[控件學習-3]ComponentArt 的腳本注冊機制學習 string sAppRootClientScriptPath = Path.Combine(Path.Combine(Path.Combine(Page.Request.ApplicationPath, "componentart_webui_client"), sVersionString), sScriptFile).Replace("\\", "/");
73
[控件學習-3]ComponentArt 的腳本注冊機制學習 74
[控件學習-3]ComponentArt 的腳本注冊機制學習 if(File.Exists(Context.Server.MapPath(sAppRootClientScriptPath)))
75
[控件學習-3]ComponentArt 的腳本注冊機制學習
[控件學習-3]ComponentArt 的腳本注冊機制學習
[控件學習-3]ComponentArt 的腳本注冊機制學習 76
[控件學習-3]ComponentArt 的腳本注冊機制學習 sScriptLocation = sAppRootClientScriptPath;
77
[控件學習-3]ComponentArt 的腳本注冊機制學習 78
[控件學習-3]ComponentArt 的腳本注冊機制學習 79
[控件學習-3]ComponentArt 的腳本注冊機制學習
[控件學習-3]ComponentArt 的腳本注冊機制學習
[控件學習-3]ComponentArt 的腳本注冊機制學習 80
[控件學習-3]ComponentArt 的腳本注冊機制學習 81
[控件學習-3]ComponentArt 的腳本注冊機制學習 }
82
[控件學習-3]ComponentArt 的腳本注冊機制學習 83
[控件學習-3]ComponentArt 的腳本注冊機制學習 if(sScriptLocation != string.Empty)
84
[控件學習-3]ComponentArt 的腳本注冊機制學習
[控件學習-3]ComponentArt 的腳本注冊機制學習
[控件學習-3]ComponentArt 的腳本注冊機制學習 85
[控件學習-3]ComponentArt 的腳本注冊機制學習 // Do we have a tilde?
86
[控件學習-3]ComponentArt 的腳本注冊機制學習 if(sScriptLocation.StartsWith("~") && Context != null && Context.Request != null)
87
[控件學習-3]ComponentArt 的腳本注冊機制學習
[控件學習-3]ComponentArt 的腳本注冊機制學習
[控件學習-3]ComponentArt 的腳本注冊機制學習 88
[控件學習-3]ComponentArt 的腳本注冊機制學習 string sAppPath = Context.Request.ApplicationPath;
89
[控件學習-3]ComponentArt 的腳本注冊機制學習 if(sAppPath.EndsWith("/"))
90
[控件學習-3]ComponentArt 的腳本注冊機制學習
[控件學習-3]ComponentArt 的腳本注冊機制學習
[控件學習-3]ComponentArt 的腳本注冊機制學習 91
[控件學習-3]ComponentArt 的腳本注冊機制學習 sAppPath = sAppPath.Substring(0, sAppPath.Length - 1);
92
[控件學習-3]ComponentArt 的腳本注冊機制學習 }
93
[控件學習-3]ComponentArt 的腳本注冊機制學習 94
[控件學習-3]ComponentArt 的腳本注冊機制學習 sScriptLocation = sScriptLocation.Replace("~", sAppPath);
95
[控件學習-3]ComponentArt 的腳本注冊機制學習 96
[控件學習-3]ComponentArt 的腳本注冊機制學習 97
[控件學習-3]ComponentArt 的腳本注冊機制學習 //連接配接外部JS檔案
98
[控件學習-3]ComponentArt 的腳本注冊機制學習 if(File.Exists(Context.Server.MapPath(sScriptLocation)))
99
[控件學習-3]ComponentArt 的腳本注冊機制學習
[控件學習-3]ComponentArt 的腳本注冊機制學習
[控件學習-3]ComponentArt 的腳本注冊機制學習 100
[控件學習-3]ComponentArt 的腳本注冊機制學習 sScript = "<script src=\"" + sScriptLocation + "\" type=\"text/javascript\"></script>";
101
[控件學習-3]ComponentArt 的腳本注冊機制學習 102
[控件學習-3]ComponentArt 的腳本注冊機制學習 else
103
[控件學習-3]ComponentArt 的腳本注冊機制學習
[控件學習-3]ComponentArt 的腳本注冊機制學習
[控件學習-3]ComponentArt 的腳本注冊機制學習 104
[控件學習-3]ComponentArt 的腳本注冊機制學習 throw new Exception(sScriptLocation + " not found");
105
[控件學習-3]ComponentArt 的腳本注冊機制學習 106
[控件學習-3]ComponentArt 的腳本注冊機制學習 107
[控件學習-3]ComponentArt 的腳本注冊機制學習 else
108
[控件學習-3]ComponentArt 的腳本注冊機制學習
[控件學習-3]ComponentArt 的腳本注冊機制學習
[控件學習-3]ComponentArt 的腳本注冊機制學習 109
[控件學習-3]ComponentArt 的腳本注冊機制學習 // If everything failed, emit our internal script
110
[控件學習-3]ComponentArt 的腳本注冊機制學習 //使用内嵌資源檔案
111
[控件學習-3]ComponentArt 的腳本注冊機制學習 sScript = Utils.DemarcateClientScript(GetResourceContent(sDefaultPath + "." + sScriptFile));
112
[控件學習-3]ComponentArt 的腳本注冊機制學習 113
[控件學習-3]ComponentArt 的腳本注冊機制學習 114
[控件學習-3]ComponentArt 的腳本注冊機制學習 return sScript;
115
[控件學習-3]ComponentArt 的腳本注冊機制學習 本文轉自浪子部落格園部落格,原文連結:http://www.cnblogs.com/walkingboy/archive/2005/11/25/284506.html,如需轉載請自行聯系原作者