您的位置:首页 > Web前端 > JavaScript

ExtJs 备忘录(1)—— Form表单(一) [ 控件使用 ](1)

2009-09-06 14:53 585 查看
前言

  ExtJS接触至今已有4个月(5.1 - 9.1),小有心得,由于公司短期内并没有打算采用,所以备忘之以备他日之需。虽然网上资料不少,但学起来仍感费劲,所以还是想以自己的方式来与众分享。

系列

  1.  ExtJs 备忘录(1)—— Form表单(一) [ 控件使用 ]

版本

  Ext 3.0.0

正文

  一、效果图

    先用美图勾引那些驻足观望之人:





 二、代码讲解

    如果项目中大量采用ExtJS做前端,我建议采用PageBase方式来引用和使用它。

    2.1  目录结构





项目中使用Ext并不需要把整个Ext拷贝到项目中,只需要把resources整个目录和如下几个人间拷贝到项目中即可:

        ext-3.0.0\adapter\ext\ext-base.js

        ext-3.0.0\ext-all.js

        ext-3.0.0\src\locale\ext-lang-zh_CN.js

    2.1  PageBase.cs

using System;

using System.Collections.Generic;

using System.Text;

using System.Web.UI.HtmlControls;

using System.Reflection;

using ExtJS.Ext;

/// <summary>

/// 主要用于全局控制

/// </summary>

public class PageBase : System.Web.UI.Page

{

#region Member Variable

/// <summary>

/// 路由搜索方法:search

/// </summary>

public const string ROUTE_METHOD_SEARCH = "search";

/// <summary>

/// 路由修改方法:modify

/// </summary>

public const string ROUTE_METHOD_MODIFY = "modify";

/// <summary>

/// 路由删除方法:remove

/// </summary>

public const string ROUTE_METHOD_REMOVE = "remove";

/// <summary>

/// 路由添加方法:add

/// </summary>

public const string ROUTE_METHOD_ADD = "add";

/// <summary>

/// 路由详情方法:detail

/// </summary>

public const string ROUTE_METHOD_DETAIL = "detail";

#endregion

#region Method

#region override method

/// <summary>

/// 预初始化,在初始化页面OnInit事件前触发

/// </summary>

/// <param name="e"></param>

protected override void OnPreInit(EventArgs e)

{

#region 权限认证

#endregion

#region 路由请求

//路由请求

string reqMethod = Request.QueryString["method"];

if (!string.IsNullOrEmpty(reqMethod))

{

switch (reqMethod.ToLower())

{

case ROUTE_METHOD_MODIFY:

Response.Write(Modify());

break;

case ROUTE_METHOD_SEARCH:

Response.Write(Search());

break;

case ROUTE_METHOD_REMOVE:

Response.Write(Remove());

break;

case ROUTE_METHOD_ADD:

Response.Write(Add());

break;

case ROUTE_METHOD_DETAIL:

Response.Write(Detail());

break;

default:

//反射

MethodInfo method = this.GetType().GetMethod(reqMethod);

if (method != null)

{

Response.Write(method.Invoke(this, null));

}

break;

}

End();

}

#endregion

base.OnPreInit(e);

}

/// <summary>

/// 初始化(OnInit)

/// </summary>

/// <param name="e"></param>

protected override void OnInit(EventArgs e)

{

#region ExtJS

ExtHelper.Add(this.Header, this);

#endregion

base.OnInit(e);

}

#endregion

#region virtual method

/// <summary>

/// 搜索

/// </summary>

/// <returns></returns>

public virtual string Search()

{

return string.Empty;

}

/// <summary>

/// 修改

/// </summary>

/// <returns></returns>

public virtual string Modify()

{

return string.Empty;

}

/// <summary>

/// 删除

/// </summary>

/// <returns></returns>

public virtual string Remove()

{

return string.Empty;

}

/// <summary>

/// 添加

/// </summary>

/// <returns></returns>

public virtual string Add()

{

return string.Empty;

}

/// <summary>

/// 详情

/// </summary>

/// <returns></returns>

public virtual string Detail()

{

return string.Empty;

}

/// <summary>

/// 可以覆盖做其他处理

/// Response.End();

/// </summary>

public virtual void End()

{

Response.End();

}

#endregion

#endregion

}
      这个PageBase类主要做以下三个工作:

        a).  权限判断

          这里权限判断是空的,大家实际项目中可以加上或者与现在项目进行集成。

        b).  ExtJS必须的资源文件加载

          在OnInit页面的HtmlHead中按顺序加载ext-all.css、ext-base.js、ext-all.js、ext-lang-zh_CN.js

        c).  路由请求

          处理Ext的GET/POST请求,模拟服务器端控件的事件。

      小技巧:

Request.QueryString["method"]中method参数名称是忽略大小写的。

    2.2  ExtHelper.cs

using System;

using System.Collections.Generic;

using System.Text;

using System.Configuration;

using System.Web.UI.HtmlControls;

namespace ExtJS.Ext

{

public sealed class ExtHelper

{

#region MemberVariable

public static readonly string EXT_BASE = ConfigurationManager.AppSettings["EXT_BASE"] ?? "/js/ext";

/// <summary>

/// ext-all.css

/// </summary>

public static readonly string EXT_CSS_ALL = EXT_BASE + "/resources/css/ext-all.css";

/// <summary>

/// ext-all.js

/// </summary>

public static readonly string EXT_JS_ALL = EXT_BASE + "/ext-all.js";

/// <summary>

/// ext-base.js

/// </summary>

public static readonly string EXT_JS_BASE = EXT_BASE + "/adapter/ext/ext-base.js";

/// <summary>

/// ext-lang-zh_CN.js

/// </summary>

public static readonly string EXT_JS_LANGUAGE = EXT_BASE + "/source/locale/ext-lang-zh_CN.js";

/// <summary>

/// EasyExt.js

/// </summary>

public static readonly string EXT_JS_EASYEXT = EXT_BASE + "/plugins/EasyExt.js";

/// <summary>

/// 0 ext-all.css

/// 1 ext-base.js

/// 2 ext-all.js

/// 3 ext-lang-zh_CN.js

/// 4 EasyExt.js

/// </summary>

private static readonly IList<HtmlGenericControl> extresource;

#endregion

#region Constructors

static ExtHelper()

{

extresource = new List<HtmlGenericControl>();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息