Originaalandmed:
Tõlgitud andmed:
Üldiselt on DataTable'i pärimine ja kuvamine koodis lihtne, kui päritud DataTable'i kasutatakse teatud juhtimise DataSource'ina, on see okei, kuid selle DataTable'i väljad on kõik ingliskeelsed väljad, kuidas neid kõiki hiina keelde muuta?
Nüüd tean iga ingliskeelse välja hiina nimesid ja kogu väljade tõlkeinfo on salvestatud tabelisse nimega COLUMNTRANSLATION, ning SQL-lause selle tabeli loomiseks on:
loo tabel COLUMNTRANSLATION
( ID-NUMBER (10) ESMAVÕTI, VEERU nimi VARCHAR2(50), //välja nimi TÕLGE VARCHAR2(50) // väli, mis vastab hiina nimele
)
Pane sinna esmalt mõned andmed, nii et tabelis oleks mitu kirjet, näiteks: StudentName vastab "õpilase nimele".
Nüüd, kui mul on DataTable kõigi väljade nimedega inglise keeles, saan selle tõlkida ja tõlgitud DataTable'i tagastada, lihtsalt käivitades järgmise koodi:
- /// <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;
- }
Kopeeri kood Selle meetodi idee on luua uus andmetabel vastavalt tõlgitavale andmetabelile: iga uue andmetabeli veeru nimi on tõlgitud hiina nimi (kui ingliskeelset veeru nime ei tõlgita, säilitatakse ingliskeelne veeru nimi, kui seda saab tõlkida, siis tõlgitakse) ning pärast uue andmetabeli väliinfo koostamist lisatakse vana andmetabeli kirjed ükshaaval uude andmetabelisse.
Hehe, see on käik... Aga kiirus on siiski võimalik.
|