Data asli:
Data terjemahan:
Umumnya, mudah untuk mengkueri dan menampilkan DataTable dalam kode, selama DataTable yang dikueri digunakan sebagai DataSource dari kontrol tertentu, tidak apa-apa, tetapi bidang DataTable ini semuanya adalah bidang bahasa Inggris, bagaimana cara mengubah semuanya menjadi bahasa Cina?
Sekarang saya tahu nama bahasa Cina dari setiap bidang bahasa Inggris, dan semua informasi terjemahan bidang disimpan dalam tabel, yang disebut COLUMNTRANSLATION, dan pernyataan SQL untuk membuat tabel ini adalah:
buat tabel COLUMNTERJEMAHAN
( NOMOR ID(10) KUNCI UTAMA, NAMA KOLOM VARCHAR2(50), //nama bidang TERJEMAHAN VARCHAR2(50) // yang sesuai dengan nama Cina
)
Masukkan beberapa data di dalamnya terlebih dahulu, sehingga ada beberapa catatan dalam tabel ini, misalnya: StudentName sesuai dengan "nama siswa".
Sekarang saya memiliki DataTable dengan semua nama bidangnya dalam bahasa Inggris, saya dapat menerjemahkannya dan mengembalikan DataTable yang diterjemahkan hanya dengan mengeksekusi kode berikut:
- /// <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;
- }
Salin kode Ide dari metode ini adalah untuk membuat DataTable baru sesuai dengan DataTable yang akan diterjemahkan: nama kolom dari setiap kolom DataTable baru adalah nama Cina yang diterjemahkan (jika nama kolom bahasa Inggris tidak diterjemahkan, nama kolom bahasa Inggris dipertahankan, jika dapat diterjemahkan, itu diterjemahkan), dan setelah membangun informasi bidang DataTable baru, catatan DataTable lama dimasukkan ke dalam DataTable baru satu per satu.
Hehe, giliran ... Tapi kecepatan masih mungkin.
|