Date originale:
Date traduse:
În general, este ușor să interogezi și să afișezi un DataTable în cod, atâta timp cât DataTable interogat este folosit ca DataSource al unui anumit control, este în regulă, dar câmpurile acestui DataTable sunt toate câmpuri în engleză, cum să le schimbi pe toate în chineză?
Acum știu numele chinezești ale fiecărui câmp în engleză, iar toate informațiile de traducere ale câmpurilor sunt stocate într-un tabel numit COLUMNTRANSLATION, iar instrucțiunea SQL pentru a crea acest tabel este:
create table COLUMNTRANSLATION
( NUMĂR DE IDENTIFICARE (10) CHEIE PRIMARĂ, NUME COLOANĂ VARCHAR2(50), //nume câmp TRADUCERE VARCHAR2(50) // câmp corespunzător numelui chinezesc
)
Puneți câteva date mai întâi, astfel încât să existe mai multe înregistrări în acest tabel, de exemplu: StudentName corespunde "numelui studentului".
Acum că am un DataTable cu toate numele câmpurilor în engleză, pot să-l traduc și să returnez DataTable tradus pur și simplu executând următorul cod:
- /// <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;
- }
Cod de copiere Ideea acestei metode este de a construi un nou DataTable conform DataTable ce urmează a fi tradus: numele coloanei fiecărei coloane din noul DataTable este numele chinezesc tradus (dacă numele coloanei în engleză nu este tradus, numele coloanei în engleză este păstrat, dacă poate fi tradus, este tradus), iar după construirea informațiilor despre câmpul noului DataTable, înregistrările vechiului DataTable sunt inserate una câte una în noul DataTable.
Hehe, e o întoarcere... Dar viteza este încă posibilă.
|