Originale data:
Oversatte data:
Generelt er det nemt at forespørge og vise en DataTable i koden, så længe den forespurgte DataTable bruges som DataSource for en bestemt kontrol, er det i orden, men felterne i denne DataTable er alle engelske felter, hvordan ændrer man dem alle til kinesisk?
Nu kender jeg de kinesiske navne på hvert engelsk felt, og al oversættelsesinformation om felterne er gemt i en tabel kaldet COLUMNTRANSLATION, og SQL-sætningen til at oprette denne tabel er:
oprette tabel COLUMNTRANSLATION
( ID-NUMMER(10) PRIMÆR NØGLE, KOLONNENAVN VARCHAR2(50), //feltnavn OVERSÆTTELSE VARCHAR2(50) // felt svarende til det kinesiske navn
)
Læg først nogle data i den, så der er flere poster i denne tabel, for eksempel: StudentName svarer til "student name".
Nu hvor jeg har en DataTable med alle dens feltnavne på engelsk, kan jeg oversætte den og returnere den oversatte DataTable ved blot at udfø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 kode Idéen med denne metode er at konstruere en ny DataTable i henhold til den DataTable, der skal oversættes: kolonnenavnet for hver kolonne i den nye DataTable er det oversatte kinesiske navn (hvis det engelske kolonnenavn ikke oversættes, beholdes det engelske kolonnenavn, hvis det kan oversættes, oversættes det), og efter at have konstrueret feltinformationen for den nye DataTable, indsættes posterne fra den gamle DataTable i den nye DataTable én ad gangen.
Hehe, det er en tur... Men hastighed er stadig mulig.
|