天天看点

[控件学习-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,如需转载请自行联系原作者

继续阅读