Originaldaten:
Übersetzte Daten:
Im Allgemeinen ist es einfach, eine DataTable im Code abzufragen und anzuzeigen, solange die abgerufene DataTable als DataSource einer bestimmten Kontrolle verwendet wird, ist das in Ordnung, aber die Felder dieser DataTable sind alle englische Felder – wie ändert man sie alle auf Chinesisch?
Jetzt kenne ich die chinesischen Namen jedes englischen Feldes, und alle Übersetzungsinformationen der Felder werden in einer Tabelle namens COLUMNTRANSLATION gespeichert, und die SQL-Anweisung zur Erstellung dieser Tabelle lautet:
Tabelle erstellen COLUMNTRANSLATION
( ID-NUMMER (10) PRIMÄRSCHLÜSSEL, SPALTENNAME VARCHAR2(50), //feldname ÜBERSETZUNG VARCHAR2(50) // Feld, das dem chinesischen Namen entspricht
)
Fügen Sie zuerst einige Daten hinein, sodass mehrere Datensätze in dieser Tabelle enthalten sind, zum Beispiel: StudentName entspricht "student name".
Jetzt, da ich eine DataTable mit allen Feldnamen auf Englisch habe, kann ich sie übersetzen und die übersetzte DataTable zurückgeben, indem ich einfach folgenden Code ausführe:
- /// <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 kopieren Die Idee dieser Methode ist es, eine neue DataTable entsprechend der zu übersetzenden DataTable zu erstellen: Der Spaltenname jeder Spalte der neuen DataTable ist der übersetzte chinesische Name (wenn der englische Spaltenname nicht übersetzt wird, bleibt der englische Spaltenname erhalten, wenn übersetzt werden kann, wird er übersetzt), und nachdem die Feldinformationen der neuen DataTable erstellt wurden, werden die Datensätze der alten DataTable nacheinander in die neue DataTable eingefügt.
Hehe, es ist eine Wendung... Aber Geschwindigkeit ist immer noch möglich.
|