首页  ·  知识 ·  前端
Ext生成GridView的CodeSmith模板
网友  http://www.cnblogs.com/zhangpengshou/  综合  编辑:德仔   图片来源:网络
lt;%-- Name:lt;%= GetClassName(SourceTable) %gt; Author: sunfishlu Description: <
<%--
Name:<%= GetClassName(SourceTable) %>
Author: sunfishlu
Description:
--%>
<%@ CodeTemplate Language="C#" TargetLanguage="JScript" Description="Generates a very simple business object." ResponseEncoding="UTF-8" %>
<%@ Property Name="NameSpace" Type="String" Category="Text" Default="Sunfishlu." Description="The namespace to use for this class" %>
<%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="Context" Description="Table that the object is based on." %>
<%@ Assembly Name="SchemaExplorer" %>
<%@ Assembly Name="System.Data" %>
<%@ Import Namespace="SchemaExplorer" %>
<%@ Import Namespace="System.Data" %>
/**//**
 * @author sunfish
 */
var storeMain = new Ext.data.Store({
    proxy:new Ext.data.HttpProxy({
        url:'<%= GetUrlName(SourceTable) %>'
    }),
    reader:new Ext.data.JsonReader({
        root:'data',
        id:'<%= SourceTable.PrimaryKey.MemberColumns[0].Name %>',
        totalProperty:'totalCount',
        fields:
        [
            <% for (int i=0; i < SourceTable.Columns.Count; ++i) { %> <%=GetMemberVariableName(SourceTable.Columns[i])%><% if (i < SourceTable.Columns.Count - 1) { %>,<% }%><%}%>
        ]
    }),
    remoteSort:true
});
Ext.onReady(function(){
    Ext.BLANK_IMAGE_URL = 'http://images.cnblogs.com/s.gif';
    Ext.QuickTips.init();
    var grid = new Ext.grid.GridPanel({
        store:storeMain,
        columns:
        [
            new Ext.grid.RowNumberer(),
           
            <% for (int i = 0; i < SourceTable.Columns.Count; i++) { %>
            {header:"<%=GetHeaderName(SourceTable.Columns[i])%>",align:'center',sortable: true,dataIndex:<%=GetMemberVariableName(SourceTable.Columns[i])%>}<% if (i < SourceTable.Columns.Count - 1) { %>,<% } %>               
            <% } %>
        ],
        renderTo:'grid',
        viewConfig:{forceFit:true},       
        trackMouseOver:true,
        loadMask: true,
        autoShow : true,
        autoScroll: true,
        loadMask:{msg:"数据加载中,请稍等"},
        bbar:new Ext.PagingToolbar({
            pageSize:20,
            store:storeMain,
            displayInfo:true,
            displayMsg:'当前显示 {0} - {1}条记录 /共 {2}条记录',
            emptyMsg:"没有数据"
        })
    });
    storeMain.load({params:{start:0, limit:20,sort:'<%= SourceTable.PrimaryKey.MemberColumns[0].Name %>',dir:'desc'}});
});
<script runat="template">
// My functions here.
public string GetClassName(TableSchema table)
{
    if(table==null)
    {
        return null;
    }
    return table.Name + "Grid";
}
public string GetUrlName(TableSchema table)
{
    if(table==null)
    {
        return null;
    }
    return table.Name + "Grid"+".aspx";
}
script#region script
public string GetMemberVariableDeclarationStatement(ColumnSchema column)
{
    return GetMemberVariableDeclarationStatement("private", column);
}
public string GetMemberVariableDeclarationStatement(string protectionLevel, ColumnSchema column)
{
    string statement = protectionLevel + " ";
    statement += GetCSharpVariableType(column) + " " + GetMemberVariableName(column);
   
    string defaultValue = GetMemberVariableDefaultValue(column);
    if (defaultValue != "")
    {
        statement += " = " + defaultValue;
    }
   
    statement += ";";
   
    return statement;
}
public string GetConstructorParameters()
{
    string ret = "";
    foreach(ColumnSchema column in SourceTable.Columns)
    {
        ret += GetCSharpVariableType(column) + " " + GetCamelCaseName(GetPropertyName(column)) + ",\n\t\t\t";
    }
    return ret.Substring(0, ret.Length - 5);
}
public string GetAssignValue()
{
    string ret = "";
    foreach(ColumnSchema column in SourceTable.Columns)
    {
        ret += GetMemberVariableName(column) +  (new String(' ', GetPropertyNameMaxLength() - GetPropertyNameLength(column))) + " = " + GetCamelCaseName(GetPropertyName(column)) + ";\n\t\t\t";
    }
    return ret;
}
public string GetReaderAssignmentStatement(ColumnSchema column, int index)
{
    string statement = "if (!reader.IsDBNull(" + index.ToString() + ")) ";
    statement += GetMemberVariableName(column) + " = ";
   
    if (column.Name.EndsWith("TypeCode")) statement += "(" + column.Name + ")";
   
    statement += "reader." + GetReaderMethod(column) + "(" + index.ToString() + ");";
   
    return statement;
}
public string GetCamelCaseName(string value)
{
    //return value.Substring(0, 1).ToLower() + value.Substring(1);
    return value;
}
public string GetMemberVariableName(ColumnSchema column)
{
    //string propertyName = GetPropertyName(column);
    string propertyName = column.Name;
    string memberVariableName = "'" +GetCamelCaseName(propertyName)+"'";
   
    return memberVariableName;
}
public string GetHeaderName(ColumnSchema column)
{
    //string propertyName = GetPropertyName(column);
    string propertyName = column.Name;
    string memberVariableName = GetCamelCaseName(propertyName);
   
    return memberVariableName;
}
public string GetPropertyName(ColumnSchema column)
{
    string propertyName = column.Name;
   
    if (propertyName == column.Table.Name + "Name") return "Name";
    if (propertyName == column.Table.Name + "Description") return "Description";
   
    if (propertyName.EndsWith("TypeCode")) propertyName = propertyName.Substring(0, propertyName.Length - 4);
   
    return propertyName;
}
public int GetPropertyNameLength(ColumnSchema column)
{
    return (GetPropertyName(column)).Length;
}
public int GetPropertyNameMaxLength()
{
    int ret = 0;
    foreach(ColumnSchema column in SourceTable.Columns)
    {
        ret = ret < GetPropertyNameLength(column)?GetPropertyNameLength(column):ret;
    }
    return ret;
}
       
public string GetMemberVariableDefaultValue(ColumnSchema column)
{
    if(column.IsPrimaryKeyMember)
    {
        return "";
    }
    switch (column.DataType)
    {
        case DbType.Guid:
        {
            return "Guid.Empty";
        }
        case DbType.AnsiString:
        case DbType.AnsiStringFixedLength:
        case DbType.String:
        case DbType.StringFixedLength:
        {
            return "String.Empty";
        }
        default:
        {
            return "";
        }
    }
}
public string GetCSharpVariableType(ColumnSchema column)
{
    if (column.Name.EndsWith("TypeCode")) return column.Name;
   
    switch (column.DataType)
    {
        case DbType.AnsiString: return "string";
        case DbType.AnsiStringFixedLength: return "string";
        case DbType.Binary: return "byte[]";
        case DbType.Boolean: return "bool";
        case DbType.Byte: return "byte";
        case DbType.Currency: return "decimal";
        case DbType.Date: return "DateTime";
        case DbType.DateTime: return "DateTime";
        case DbType.Decimal: return "decimal";
        case DbType.Double: return "double";
        case DbType.Guid: return "Guid";
        case DbType.Int16: return "short";
        case DbType.Int32: return "int";
        case DbType.Int64: return "long";
        case DbType.Object: return "object";
        case DbType.SByte: return "sbyte";
        case DbType.Single: return "float";
        case DbType.String: return "string";
        case DbType.StringFixedLength: return "string";
        case DbType.Time: return "TimeSpan";
        case DbType.UInt16: return "ushort";
        case DbType.UInt32: return "uint";
        case DbType.UInt64: return "ulong";
        case DbType.VarNumeric: return "decimal";
        default:
        {
            return "__UNKNOWN__" + column.NativeType;
        }
    }
}
public string GetReaderMethod(ColumnSchema column)
{
    switch (column.DataType)
    {
        case DbType.Byte:
        {
            return "GetByte";
        }
        case DbType.Int16:
        {
            return "GetInt16";
        }
        case DbType.Int32:
        {
            return "GetInt32";
        }
        case DbType.Int64:
        {
            return "GetInt64";
        }
        case DbType.AnsiStringFixedLength:
        case DbType.AnsiString:
        case DbType.String:
        case DbType.StringFixedLength:
        {
            return "GetString";
        }
        case DbType.Boolean:
        {
            return "GetBoolean";
        }
        case DbType.Guid:
        {
            return "GetGuid";
        }
        case DbType.Currency:
        case DbType.Decimal:
        {
            return "GetDecimal";
        }
        case DbType.DateTime:
        case DbType.Date:
        {
            return "GetDateTime";
        }
        case DbType.Binary:
        {
            return "GetBytes";
        }
        default:
        {
            return "__SQL__" + column.DataType;
        }
    }
}
public string GetSqlDbType(ColumnSchema column)
{
    switch (column.NativeType)
    {
        case "bigint": return "BigInt";
        case "binary": return "Binary";
        case "bit": return "Bit";
        case "char": return "Char";
        case "datetime": return "DateTime";
        case "decimal": return "Decimal";
        case "float": return "Float";
        case "image": return "Image";
        case "int": return "Int";
        case "money": return "Money";
        case "nchar": return "NChar";
        case "ntext": return "NText";
        case "numeric": return "Decimal";
        case "nvarchar": return "NVarChar";
        case "real": return "Real";
        case "smalldatetime": return "SmallDateTime";
        case "smallint": return "SmallInt";
        case "smallmoney": return "SmallMoney";
        case "sql_variant": return "Variant";
        case "sysname": return "NChar";
        case "text": return "Text";
        case "timestamp": return "Timestamp";
        case "tinyint": return "TinyInt";
        case "uniqueidentifier": return "UniqueIdentifier";
        case "varbinary": return "VarBinary";
        case "varchar": return "VarChar";
        default: return "__UNKNOWN__" + column.NativeType;
    }
}
public string GetPrimaryKeyType(TableSchema table)
{
    if (table.PrimaryKey != null)
    {
        if (table.PrimaryKey.MemberColumns.Count == 1)
        {
            return GetCSharpVariableType(table.PrimaryKey.MemberColumns[0]);
        }
        else
        {
            throw new ApplicationException("This template will not work on primary keys with more than one member column.");
        }
    }
    else
    {
        throw new ApplicationException("This template will only work on tables with a primary key.");
    }
}
public override string GetFileName()
{
    return this.GetClassName(this.SourceTable) + ".cs";
}
public string GetCamelCaseNameTrue(string value)
{
    return value.Substring(0, 1).ToLower() + value.Substring(1);
}
#endregion script
</script>
 
本文作者:网友 来源:网络http://www.cnblogs.com/zhangpengshou/
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读