架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 19958|回复: 0

[资料] 将DataTable的字段名全部翻译为中文并返回

[复制链接]
发表于 2015-10-29 13:50:20 | 显示全部楼层 |阅读模式
原来的数据:
QQ截图20151029130226.jpg
翻译后的数据:

QQ截图20151029130258.jpg

一般在代码里想要查询并显示出一个DataTable很容易,只要将查询到的DataTable作为某个控件的DataSource就OK了,但是此DataTable的字段全部都为英文字段,怎样将其全部改为中文呢?



现在我已经知道各个英文字段的中文名称,且字段的翻译信息全部存为一张表,叫字段说明表(COLUMNTRANSLATION),建此表的SQL语句为:

create table COLUMNTRANSLATION

(
    ID   NUMBER(10) PRIMARY KEY,
    COLUMNNAME   VARCHAR2(50),       //字段名称
    TRANSLATION   VARCHAR2(50)         //字段对应的中文名称
)



自己先放几个数据进去,使这张表里有几条记录,例如:StudentName对应的是“学生姓名”。



那么现在我已经由一个DataTable了,它的字段名全部都为英文,我只需执行以下代码就可将其翻译过来,并返回翻译过后的DataTable:

  1. /// <summary>
  2.         /// 将DataTable的字段名全部翻译为中文
  3.         /// </summary>
  4.         /// <param name="table">待翻译的DataTable</param>
  5.         /// <returns></returns>
  6.         public DataTable TranslateDataTable(DataTable table)
  7.         {
  8.             DataTable dt = new DataTable();
  9.             dt.TableName = "TempTable";

  10.             if (table != null && table.Rows.Count > 0)
  11.             {
  12.                 //先为dt构造列信息
  13.                 foreach (DataColumn column in table.Columns)
  14.                 {
  15.                     string name = GetColumnName(column.ColumnName);
  16.                     dt.Columns.Add(name);
  17.                 }

  18.                 for (int i = 0; i < table.Rows.Count; i++)
  19.                 {
  20.                     DataRow NewRow = dt.NewRow();
  21.                     DataRow row = table.Rows[i];

  22.                     for (int j = 0; j < dt.Columns.Count; j++)
  23.                     {
  24.                         NewRow[j] = row[j].ToString();
  25.                     }

  26.                     dt.Rows.Add(NewRow);
  27.                 }
  28.             }
  29.             return dt;
  30.         }

  31.         /// <summary>
  32.         /// 得到列名称的别名
  33.         /// </summary>
  34.         /// <param name="columnName"></param>
  35.         /// <returns></returns>
  36.         private string GetColumnName(string columnName)
  37.         {
  38.             string sqlString = " Select TRANSLATION from COLUMNTRANSLATION where COLUMNNAME = '" + columnName.ToUpper() + "'";

  39.             object s = dao.ExecuteScalar(sqlString);
  40.             string name = (s == null) ? columnName : s.ToString(); //如果此英文字段有翻译,则返回其中文翻译,若无,则保留此英文翻译。
  41.             return name;
  42.         }
复制代码
这种方法的思想是根据待翻译的DataTable构造新的DataTable:新的DataTable的每一列的列名为翻译后的中文名(若英文列名无翻译,则保留英文列名,若能翻译,则翻译过来),构造好新的DataTable的字段信息后,再一条条的把旧的DataTable的记录插入到新的DataTable中去。



呵呵,绕弯了...但是速度还是可以的。







上一篇:EasyUI datagrid表格动态绑定field列
下一篇:关闭 Visual Studio 2013 的 Browser Link 功能
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2025-11-4 21:13

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表