Alkuperäiset tiedot:
Käännetyt tiedot:
Yleisesti on helppoa hakea ja näyttää DataTable koodissa, kunhan haettu DataTable toimii tietyn kontrollin DataSourcena, se on ok, mutta tämän DataTablen kentät ovat kaikki englanninkielisiä kenttiä, miten ne kaikki muuttaa kiinaksi?
Nyt tiedän jokaisen englanninkielisen kentän kiinankieliset nimet, ja kaikki kenttien käännöstiedot tallennetaan taulukkoon nimeltä COLUMNTRANSLATION, ja SQL-lause tämän taulukon luomiseksi on:
luo taulukko COLUMNTRANSLATION
( ID-NUMERO (10) ENSISIJAINEN AVAIN, SARAKENIMI VARCHAR2(50), //kentän nimi KÄÄNNÖS VARCHAR2(50) // kenttä, joka vastaa kiinalaista nimeä
)
Lisää ensin muutama tieto, jotta taulukossa on useita tietueita, esimerkiksi: StudentName vastaa "student name".
Nyt kun minulla on DataTable, jossa on kaikki kentän nimet englanniksi, voin kääntää sen ja palauttaa käännetyn DataTablen yksinkertaisesti suorittamalla seuraavan koodin:
- /// <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;
- }
Kopioi koodi Tämän menetelmän idea on rakentaa uusi DataTable käännettävän DataTablen mukaisesti: jokaisen uuden DataTable-sarakkeen sarakkeen nimi on käännetty kiinalainen nimi (jos englanninkielistä sarakkeen nimeä ei käännetä, englanninkielinen sarakkeennimi säilyy, jos se voidaan kääntää, se käännetään), ja uuden DataTablen kenttätiedot on rakennettu, vanhan DataTablen tietueet lisätään uuteen DataTableen yksi kerrallaan.
Hehe, nyt on vuoro... Mutta nopeus on silti mahdollista.
|