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