Données originales :
Données traduites :
En général, il est facile de requête et d’afficher une DataTable dans le code, tant que la DataTable interrogée est utilisée comme sourceDonnées d’un certain contrôle, cela peut aller, mais les champs de cette DataTable sont tous des champs anglais, comment les changer tous en chinois ?
Je connais maintenant les noms chinois de chaque champ anglais, et toutes les informations de traduction des champs sont stockées dans une table appelée COLUMNTRANSLATION, et l’instruction SQL pour créer cette table est la suivante :
créer table COLUMNTRANSLATION
( NUMÉRO D’IDENTIFICATION (10) CLÉ PRIMAIRE, NOM COLONNE VARCHAR2(50), //nom du champ TRADUCTION VARCHAR2(50) // champ correspondant au nom chinois
)
Mettez d’abord quelques données dedans, afin qu’il y ait plusieurs enregistrements dans ce tableau, par exemple : StudentName correspond à « nom de l’étudiant ».
Maintenant que j’ai un DataTable avec tous ses noms de champs en anglais, je peux le traduire et retourner le DataTable traduit simplement en exécutant le code suivant :
- /// <summary>
- /// 将DataTable的字段名全部翻译为中文
- /// </summary>
- /// <param name="table">待翻译的DataTable</param>
- /// <returns></returns>
- public DataTable TranslateDataTable(DataTable table)
- {
- DataTable dt = new DataTable();
- dt.TableName = "TempTable";
- if (table != null && table.Rows.Count > 0)
- {
- //先为dt构造列信息
- foreach (DataColumn column in table.Columns)
- {
- string name = GetColumnName(column.ColumnName);
- dt.Columns.Add(name);
- }
- for (int i = 0; i < table.Rows.Count; i++)
- {
- DataRow NewRow = dt.NewRow();
- DataRow row = table.Rows[i];
- for (int j = 0; j < dt.Columns.Count; j++)
- {
- NewRow[j] = row[j].ToString();
- }
- dt.Rows.Add(NewRow);
- }
- }
- return dt;
- }
- /// <summary>
- /// 得到列名称的别名
- /// </summary>
- /// <param name="columnName"></param>
- /// <returns></returns>
- private string GetColumnName(string columnName)
- {
- string sqlString = " Select TRANSLATION from COLUMNTRANSLATION where COLUMNNAME = '" + columnName.ToUpper() + "'";
- object s = dao.ExecuteScalar(sqlString);
- string name = (s == null) ? columnName : s.ToString(); //如果此英文字段有翻译,则返回其中文翻译,若无,则保留此英文翻译。
- return name;
- }
Code de copie L’idée de cette méthode est de construire un nouveau DataTable selon le DataTable à traduire : le nom de chaque colonne du nouveau DataTable est le nom chinois traduit (si le nom de la colonne anglais n’est pas traduit, le nom de la colonne anglais est conservé, s’il peut être traduit, il est transformé), et après avoir construit les informations de champ du nouveau DataTable, les enregistrements de l’ancien DataTable sont insérés dans le nouveau DataTable un par un.
Hehe, c’est un tour... Mais la vitesse reste possible.
|