欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

C#实现GRID字段别名显示,利用MSSQL数据库表及字段描述

程序员文章站 2022-05-15 14:43:57
...

大家看到现有的大多数ERP系统向用户展示的都是中文的字段名,如果维护过ERP就会发现后台的数据库里面用的都是英文字段名的,这时就需要一个字段名别名转换处理,我有想过用[字段名 AS 别名]的方法不过我觉得好麻烦 也写了好多的代码,后面我无意中看到了MSDN

大家看到现有的大多数ERP系统向用户展示的都是中文的字段名,如果维护过ERP就会发现后台的数据库里面用的都是英文字段名的,这时就需要一个字段名别名转换处理,我有想过用[字段名 AS 别名]的方法不过我觉得好麻烦 也写了好多的代码,后面我无意中看到了MSDN上的文档发现了DataTableMapping
以下代码示例创建一个 DataTableMapping(从 System.Data.Common 命名空间)并通过将其命名为“Table”来使其成为指定 DataAdapter 的默认映射。然后,该示例将查询结果中第一个表(Northwind 数据库的 Customers 表)中的列映射到 DataSet 的 Northwind Customers 表中的一组更为用户友好的名称。对于未映射的列,将使用数据源中的列名称。
这里面的“一组更为用户友好的名称” 这几个字吸引了我的眼球。

1.得到一个表包含:表名,表描述,字段名,字段描述等字段资料

        public DataTable GetColumnsInformation(bool IsHeader, params string[] TableNames)
        {
            using (SqlConnection sconn = new SqlConnection(ConnectionString.sqlconnection))
            {
                StringBuilder sbTableInner = new StringBuilder();
                DataSet ds = new DataSet();
                DataTable dt = new DataTable();
                if (!IsHeader)
                {
                    for (int CurrentTable = 0; CurrentTable 2.利用DataTableMapping 实现,向用户显示友好的字段名称

        public DataTable Query(string tableName, string where, bool IsAlias = true)
        {
            DataTable dtColumns = new DataTable();
            dtColumns = bq.ColumnsInformation(false, new string[] { tableName });
            using (SqlDataAdapter sda = new SqlDataAdapter("SELECT * FROM " + tableName +
                " WHERE InnerID LIKE @where ORDER BY RowID", ConnectionString.sqlconnection))
            {
                SqlParameter parm = new SqlParameter("@where", "%" + where + "%");
                sda.SelectCommand.Parameters.Add(parm);
                DataTableMapping mapping = sda.TableMappings.Add(tableName, dtColumns.Rows[0]["TableDecription"].ToString());
                for (int CurrentRow = 0; CurrentRow 
这边可以考虑多表关联的情况,留给大家去动动脑子吧!