Orijinal veriler:
Çevrilmiş veriler:
Genel olarak, kodda bir DataTable sorgulamak ve görüntülemek kolaydır, sorgulanan DataTable belirli bir kontrolün DataSource'u olarak kullanıldığı sürece sorun yok, ancak bu DataTable'ın tüm alanları İngilizce alanlar, hepsini Çince'ye nasıl değiştirebilirim?
Artık her İngilizce alanın Çince isimlerini biliyorum ve alanların tüm çeviri bilgileri COLUMNTRANSLATION adı verilen bir tabloda saklanıyor ve bu tabloyu oluşturmak için SQL ifadesi şöyle:
tablo oluştur COLUMNTRANSLATION
( Kimlik NUMARASI(10) BIRINCIL ANAHTAR, SÜTUN ADI VARCHAR2(50), //alan adı ÇEVIRİ VARCHAR2(50) // Çince ismine karşılık gelen alan
)
Önce birkaç veri ekleyin, böylece bu tabloda birkaç kayıt var, örneğin: StudentName "öğrenci adı"na karşılık gelir.
Artık tüm alan isimlerinin İngilizce olduğu bir DataTable'a sahip olduğum için, onu çevirebilir ve çevrilmiş DataTable'ı sadece aşağıdaki kodu çalıştırarak geri döndürebilirim:
- /// <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;
- }
Kopya kodu Bu yöntemin amacı, çevrilecek DataTable'e göre yeni bir DataTable oluşturmaktır: yeni DataTable'in her sütununun sütun adı çevrilmiş Çince adıdır (İngilizce sütun adı çevrilmezse, İngilizce sütun adı korunur, çevrilebilirse çevrilir) ve yeni DataTable'ın alan bilgileri oluşturulduktan sonra, eski DataTable'ın kayıtları teker teker yeni DataTable'a eklenir.
Hehe, dönüş... Ama hız hâlâ mümkün.
|