Originele gegevens:
Vertaalde gegevens:
Over het algemeen is het eenvoudig om een DataTable in de code te bevragen en weer te geven, zolang de geraadpleegde DataTable wordt gebruikt als DataSource van een bepaalde controle, is het prima, maar de velden van deze DataTable zijn allemaal Engelse velden, hoe verander je ze allemaal naar Chinees?
Nu ken ik de Chinese namen van elk Engels veld, en alle vertaalinformatie van de velden wordt opgeslagen in een tabel, genaamd COLUMNTRANSLATION, en de SQL-instructie om deze tabel te maken is:
maak tabel COLUMNTRANSLATION
( ID-NUMMER (10) PRIMAIRE SLEUTEL, KOLOMNAAM VARCHAR2(50), //veldnaam VERTALING VARCHAR2(50) // veld dat overeenkomt met de Chinese naam
)
Plaats er eerst een paar gegevens in, zodat er meerdere records in deze tabel staan, bijvoorbeeld: StudentName komt overeen met "student name".
Nu ik een DataTable heb met al zijn veldnamen in het Engels, kan ik deze vertalen en de vertaalde DataTable teruggeven door simpelweg de volgende code uit te voeren:
- /// <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;
- }
Code kopiëren Het idee van deze methode is om een nieuwe DataTable te construeren volgens de te vertalen DataTable: de kolomnaam van elke kolom van de nieuwe DataTable is de vertaalde Chinese naam (als de Engelse kolomnaam niet wordt vertaald, blijft de Engelse kolomnaam behouden, als deze kan worden vertaald, wordt deze vertaald), en na het construeren van de veldinformatie van de nieuwe DataTable worden de records van de oude DataTable één voor één in de nieuwe DataTable ingevoegd.
Hehe, het is een wending... Maar snelheid is nog steeds mogelijk.
|