zoukankan
html css js c++ java
Ext生成GridView的CodeSmith模板
<%--
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
>
查看全文
相关阅读:
Maven项目Spring配置XML报错
Emcas配置快捷代码块
ubuntu安装ipython
基于Docker的集成开发环境包含gvim&Emacs
deepin安装v11vnc服务
Eclipse 默认工作区设置
docker方式搭建DNS服务器
deepin安装vnc服务
DataReader类型化数据读取与装箱性能研究
评《禁止分班考试惹争议:学霸吃不饱,学渣吃不消》:营造公平社会环境从不分班开始
原文地址:https://www.cnblogs.com/zhangpengshou/p/1393129.html
最新文章
压测过程中出现ops断崖式下跌原因及排解
微言netty:不在浮沙筑高台
Jedis路由key的算法剥离
略解ByteBuf
基于Protostuff实现的Netty编解码器
var that = this 小坑记
略解TCP乱序和丢包
微言异步回调
ThreadLocal之我所见
JVM 基础:回收哪些内存/对象 引用计数算法 可达性分析算法 finalize()方法 HotSpot实现分析
热门文章
JVM的7种垃圾收集器:主要特点 应用场景 设置参数 基本运行原理
java的两种同步方式, Synchronized与ReentrantLock的区别
mysql乐观锁总结和实践
mysql悲观锁总结和实践
MySQL的四种事务隔离级别
redis面试总结
对象拷贝:jQuery extend
Redis实战 内存淘汰机制
Redis系列--内存淘汰机制(含单机版内存优化建议)
Docker容器的重启策略
Copyright © 2011-2022 走看看