Originale data:
Oversatte data:
Generelt er det enkelt å spørre og vise en DataTable i koden, så lenge den forespurte DataTable brukes som DataSource for en bestemt kontroll, er det greit, men feltene i denne DataTable er alle engelske felt, hvordan endrer man dem alle til kinesisk?
Nå kjenner jeg de kinesiske navnene på hvert engelsk felt, og all oversettelsesinformasjon for feltene lagres i en tabell kalt COLUMNTRANSLATION, og SQL-setningen for å lage denne tabellen er:
opprett tabell COLUMNTRANSLATION
( ID-NUMMER (10) PRIMÆRNØKKEL, KOLONNENAVN VARCHAR2(50), //feltnavn OVERSETTELSE VARCHAR2(50) // felt som tilsvarer det kinesiske navnet
)
Legg inn noen data først, slik at det er flere poster i denne tabellen, for eksempel: StudentName tilsvarer "student name".
Nå som jeg har en DataTable med alle feltnavn på engelsk, kan jeg oversette den og returnere den oversatte DataTable ved ganske enkelt å kjøre følgende 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;
- }
Kopier koden Tanken med denne metoden er å konstruere en ny DataTable i henhold til DataTable som skal oversettes: kolonnenavnet til hver kolonne i den nye DataTable er det oversatte kinesiske navnet (hvis det engelske kolonnenavnet ikke oversettes, beholdes det engelske kolonnenavnet, hvis det kan oversettes, blir det oversatt), og etter å ha konstruert feltinformasjonen til den nye DataTable, settes postene fra den gamle DataTable inn i den nye DataTable én etter én.
Hehe, det er en sving... Men fart er fortsatt mulig.
|