天天看點

[控件學習-3]ComponentArt 的腳本注冊機制學習

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,如需轉載請自行聯系原作者

繼續閱讀