Dati originali:
Dati tradotti:
In generale, è facile interrogare e visualizzare una DataTable nel codice; finché la DataTable interrogata viene usata come DataSource di un certo controllo, va bene, ma i campi di questa DataTable sono tutti campi in inglese, come cambiarli tutti in cinese?
Ora conosco i nomi cinesi di ogni campo inglese, e tutte le informazioni di traduzione dei campi sono memorizzate in una tabella chiamata COLUMNTRANSLATION, e l'istruzione SQL per creare questa tabella è:
create table COLUMNTRANSLATION
( NUMERO ID (10) CHIAVE PRIMARIA, NOME COLONNA VARCHAR2(50), //nome del campo TRADUZIONE VARCHAR2(50) // campo corrispondente al nome cinese
)
Inserisci prima qualche dato, così che ci siano diversi record in questa tabella, ad esempio: StudentName corrisponde a "nome studente".
Ora che ho un DataTable con tutti i suoi nomi di campi in inglese, posso tradurlo e restituire il DataTable tradotto semplicemente eseguendo il seguente codice:
- /// <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;
- }
Copia codice L'idea di questo metodo è costruire una nuova DataTable secondo la DataTable da tradurre: il nome della colonna di ogni colonna della nuova DataTable è il nome cinese tradotto (se il nome della colonna inglese non viene tradotto, il nome della colonna inglese viene mantenuto; se può essere tradotto, viene tradotto), e dopo aver costruito le informazioni sul campo della nuova DataTable, i record della vecchia DataTable vengono inseriti nella nuova DataTable uno per uno.
Eh, è una svolta... Ma la velocità è comunque possibile.
|