이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 20385|회답: 0

[출처] DataTable의 모든 필드 이름을 중국어로 번역한 후 반환합니다

[링크 복사]
게시됨 2015. 10. 29. 오후 1:50:20 | | | |
원본 데이터:

번역된 데이터:



일반적으로 코드에서 DataTable을 쿼리하고 표시하는 것은 쉽습니다. 쿼리된 DataTable이 특정 컨트롤의 DataSource로 사용된다면 괜찮지만, 이 DataTable의 필드는 모두 영어 필드입니다. 모두 중국어로 바꾸려면 어떻게 해야 하나요?



이제 각 영어 필드의 중국어 이름을 알게 되었고, 필드의 모든 번역 정보는 COLUMNTRANSLATION이라는 테이블에 저장되어 있습니다. 이 테이블을 만드는 SQL 문은 다음과 같습니다:

테이블 COLUMNTRANSLATION 생성

(
    ID 번호(10) 기본 키,
    열명 VARCHAR2(50), //필드 이름
    번역 VARCHAR2(50) // 중국 이름에 대응하는 필드
)



먼저 몇 가지 데이터를 넣으면, 예를 들어 StudentName은 "student name"에 해당합니다.



이제 모든 필드 이름이 영어로 된 DataTable이 생겼으니, 다음 코드를 실행하면 변환하고 변환된 DataTable을 반환할 수 있습니다:

  1. /// <summary>
  2.         /// 将DataTable的字段名全部翻译为中文
  3.         /// </summary>
  4.         /// <param name="table">待翻译的DataTable</param>
  5.         /// <returns></returns>
  6.         public DataTable TranslateDataTable(DataTable table)
  7.         {
  8.             DataTable dt = new DataTable();
  9.             dt.TableName = "TempTable";

  10.             if (table != null && table.Rows.Count > 0)
  11.             {
  12.                 //先为dt构造列信息
  13.                 foreach (DataColumn column in table.Columns)
  14.                 {
  15.                     string name = GetColumnName(column.ColumnName);
  16.                     dt.Columns.Add(name);
  17.                 }

  18.                 for (int i = 0; i < table.Rows.Count; i++)
  19.                 {
  20.                     DataRow NewRow = dt.NewRow();
  21.                     DataRow row = table.Rows[i];

  22.                     for (int j = 0; j < dt.Columns.Count; j++)
  23.                     {
  24.                         NewRow[j] = row[j].ToString();
  25.                     }

  26.                     dt.Rows.Add(NewRow);
  27.                 }
  28.             }
  29.             return dt;
  30.         }

  31.         /// <summary>
  32.         /// 得到列名称的别名
  33.         /// </summary>
  34.         /// <param name="columnName"></param>
  35.         /// <returns></returns>
  36.         private string GetColumnName(string columnName)
  37.         {
  38.             string sqlString = " Select TRANSLATION from COLUMNTRANSLATION where COLUMNNAME = '" + columnName.ToUpper() + "'";

  39.             object s = dao.ExecuteScalar(sqlString);
  40.             string name = (s == null) ? columnName : s.ToString(); //如果此英文字段有翻译,则返回其中文翻译,若无,则保留此英文翻译。
  41.             return name;
  42.         }
코드 복사
이 방법의 아이디어는 번역할 DataTable에 따라 새로운 DataTable을 구성하는 것입니다: 새 DataTable의 각 열의 열명은 번역된 중국어 이름입니다(영어 열명이 번역되지 않을 경우 영어 열명을 유지하고, 번역이 가능하면 번역됨), 새 DataTable의 필드 정보를 구성한 후 이전 DataTable의 레코드를 하나씩 새 DataTable에 삽입합니다.



헤헤, 턴이야... 하지만 속도는 여전히 가능합니다.







이전의:EasyUI 데이터그리드 테이블은 필드 컬럼을 동적으로 바인딩합니다
다음:Visual Studio 2013에서 브라우저 링크 기능을 끄세요
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com