<%-- Name:<%= GetClassName(SourceTable) %>Author: sunfishluDescription: --%><%@ 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 scriptpublic 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>