Izvirni podatki:
Prevedeni podatki:
Na splošno je enostavno poizvedovati in prikazati DataTabelo v kodi, dokler je poizvedbena DataTabela uporabljena kot DataSource določenega kontrolnika, je to v redu, vendar so polja te DataTable vsa angleška polja, kako jih spremeniti v kitajščino?
Zdaj poznam kitajska imena vsakega angleškega polja in vse prevodne informacije polj so shranjene v tabeli, imenovani COLUMNTRANSLATION, SQL pa je ukaz za ustvarjanje te tabele naslednji:
ustvari tabelo COLUMNTRANSLATION
( PRIMARNI KLJUČ Z IDENTIFIKACIJSKO ŠTEVILKO(10), IME STOLPCA VARCHAR2(50), //ime polja PREVOD VARCHAR2(50) // polje, ki ustreza kitajskemu imenu
)
Najprej vnesite nekaj podatkov, da je v tej tabeli več zapisov, na primer: ŠtudentName ustreza "ime študenta".
Zdaj, ko imam DataTable z vsemi imeni polj v angleščini, jo lahko prevedem in vrnem prevedeno DataTabelo preprosto z izvajanjem naslednje kode:
- /// <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;
- }
Kopiraj kodo Ideja te metode je sestaviti novo DataTabelo glede na podatkovno tabelo, ki jo želimo prevesti: ime stolpca vsakega stolpca nove DataTabele je prevedeno kitajsko ime (če angleško ime stolpca ni prevedeno, se angleško ime stolpca ohrani, če ga je mogoče prevesti, se prevede), in po sestavi informacij o polju nove DataTabele se zapisi stare DataTabele vstavijo v novo DataTabelo enega za drugim.
Hehe, zdaj je zavoj... A hitrost je še vedno mogoča.
|