Previous topicNext topic
Help > 使用指南 > 数据规范 > 03标准字典 >
代码添加字典

我们提供了很多种方式来实现用代码设置字典数据规范,方便我们根据不同的场景来选择合适的方法来生成。

Vb.Net
Dim tbl As SmGrid=Proj.CurrentSmGrid
'方法一:如果表数据已经保存了,可以根据RuleID来重新加载字典数据规范即可。
tbl.Cols("ColName").DataMapSet(tbl.View.ViewCols("ColName").DataMapRuleID)
'方法二:我们可以根据SQL语句和数据源来生成
Dim strSQL As String ="select DicKeys,DicValues from UserDictionary where Catalog='性别'"
Dim strConnName As String="UserDB"
'我们可以先得到字典,再生成字典数据规范
Dim dic As Dictionary(Of String,String)
dic=Proj.SysDataFactory(strConnName).GetDictionaryBySQL(Of String,String)(strSQL)
tbl.Cols("ColName").DataMapSet(dic)

'方法三:其实有了上面的SQL和数据源名称,我们也可以直接生成字典数据规范
tbl.Cols("ColName").DataMapSet(strSQL,strConnName)

'方法四:如果是单纯的字典,没有像Vales多值字段的使用场景,可以直接
tbl.Cols("ColName").DataMap=dic 

'针对一些Enum类型,我们也可以通过代码来生成字典数据规范
'方法五:直接根据Enum类型生成字典数据规范
tbl.Cols("ColName").DataMapSet(GetType(WindowStateEnum))

'方法六:根据Enum类型获得相应的字典,再通过字典生成字典数据规范
Dim dicEnum As Dictionary(Of Integer,String)=EnumExtensions.GetEnumDictionaryKeyFirst(Of WindowStateEnum)
'字典还可以通过下面的方法获得
dicEnum=EnumExtensions.GetEnumDictionaryKeyFirst(GetType(WindowStateEnum))
tbl.Cols("ColName").DataMapSet(dicEnum)

C#
SmGrid tbl = Proj.CurrentSmGrid;
// 方法一:如果表数据已经保存了,可以根据RuleID来重新加载字典数据规范即可。
tbl.Cols["ColName"].DataMapSet(tbl.View.ViewCols["ColName"].DataMapRuleID);
// 方法二:我们可以根据SQL语句和数据源来生成
string strSQL = "select DicKeys,DicValues from UserDictionary where Catalog='性别'";
string strConnName = "UserDB";
// 我们可以先得到字典,再生成字典数据规范
Dictionary<string, string> dic;
dic = Proj.SysDataFactory(strConnName).GetDictionaryBySQL<string, string>(strSQL);
tbl.Cols["ColName"].DataMapSet(dic);

// 方法三:其实有了上面的SQL和数据源名称,我们也可以直接生成字典数据规范
tbl.Cols["ColName"].DataMapSet(strSQL, strConnName);

// 方法四:如果是单纯的字典,没有像Vales多值字段的使用场景,可以直接
tbl.Cols["ColName"].DataMap = dic;

// 针对一些Enum类型,我们也可以通过代码来生成字典数据规范
// 方法五:直接根据Enum类型生成字典数据规范
tbl.Cols["ColName"].DataMapSet(typeof(WindowStateEnum));

// 方法六:根据Enum类型获得相应的字典,再通过字典生成字典数据规范
Dictionary<int, string> dicEnum = EnumExtensions.GetEnumDictionaryKeyFirst<WindowStateEnum>;
// 字典还可以通过下面的方法获得
dicEnum = EnumExtensions.GetEnumDictionaryKeyFirst(typeof(WindowStateEnum));
tbl.Cols["ColName"].DataMapSet(dicEnum);

这里我们还需要特别提醒一下,我们还提供了一个特别的字典,用来显示用户的账号为用户姓名,这时候我们可以使用下面的代码来简单实现:

tbl.Cols("ColName").SetDataMapForUserID()