2008-10-07 7 views
1

강력한 형식의 데이터 집합을 사용하는 사이트를 작성하고 있습니다.강력한 형식의 데이터 집합에 더미 열 추가

작성한 테이블을 작성한 DBA는 컬럼에 음수를 나타내는 값을 부여합니다. 열은 'Do_Not_Estimate_Flag'이며 열은 'T'또는 'F'를 포함 할 수 있습니다. 기본 테이블이나 그것을 채우는 논리를 변경할 수 없습니다. 내가하고 싶은 것은 강력하게 형식화 된 DataSet의 DataRow에 'ESTIMATION_ALLOWED'열을 추가하는 것입니다. 수정할 수있는 부분 클래스를 사용하여이 작업을 수행했습니다. (자동 생성 된 부분 클래스와 안전하게 수정할 수있는 자동 생성되지 않은 부분 클래스가 있습니다.) 논리는 부분 클래스의 속성에 있습니다. 문제는 값이

<%#DataBinder.Eval(Container.DataItem, "ESTIMATION_ALLOWED")%> 

람로드 될 때 내 재산을 무시하고 기본 DataRow를 똑바로가는 것입니다. 원하는 결과를 얻으려면 어떻게해야합니까?

여기 내 코드입니다 :

부분 클래스 MyFunkyDataTable {

 private System.Data.DataColumn columnESTIMATION_ALLOWED; 
     [System.Diagnostics.DebuggerNonUserCodeAttribute()] 
     public System.Data.DataColumn ESTIMATION_ALLOWEDColumn 
     { 
      get 
      { 
       return columnESTIMATION_ALLOWED; 
      } 
     } 

     public override void EndInit() 
     { 


      //init class 
      columnESTIMATION_ALLOWED = new System.Data.DataColumn("ESTIMATION_ALLOWED", typeof(string), null, global::System.Data.MappingType.Element); 
      Columns.Add(columnESTIMATION_ALLOWED); 
      columnESTIMATION_ALLOWED.ReadOnly = true; 

      //init Vars 
      columnESTIMATION_ALLOWED = Columns["ESTIMATION_ALLOWED"]; 
      base.EndInit(); 
     } 




    } 
    partial class MyFunkyRow 
    { 
     public string ESTIMATION_ALLOWED 
     { 
      get 
      { 
       if(DO_NOT_EST_FLAG == "N") 
       { 
        return "Yes"; 
       } 
       return "No"; 
      } 
     } 
    } 

답변

1

DataBinder 당신이 DataRow를 바인딩하고 있다는보고는 필드가 아닌 사용자가 정의한 모든 속성을 사용합니다.

protected string FormatFlag(object doNotEstimateFlag) 
{ 
    if (doNotEstimateFlag.ToString() == "N") return "Yes"; 
    return "No"; 
} 

대안이 당신의 DataTable을 채우는 쿼리를 수정하는 것입니다 : 당신이 방법을이 곳

당신은 : 예컨대, 당신이 원하는

<%#FormatFlag(DataBinder.Eval(Container.DataItem, "Do_Not_Estimate_Flag"))%> 

을 할 수있는 방법을 만들 수 있습니다. 예를 들어, 입력 한 데이터 집합에 "ESTIMATE_ALLOWED"열을 포함시킬 수 있습니다. 그것은 다음과 같이 보일 것이다 채우는 쿼리 (종속 데이터베이스는이 SQL Server에 대한 것입니다) : 내가 기억하는 경우

SELECT 
    ... 
    CASE WHEN Do_Not_Estimate_Flag = 'N' THEN 'Yes' ELSE 'No' END ESTIMATE_ALLOWED, 
    ... 
FROM 
    ... 
0

, ST의 데이터 세트의 데이터 행이 부분 클래스에서 구현됩니다. 따라서 기본 ST 데이터 세트 행 클래스에서 부분 클래스에 필요한 기능을 추가 할 수 있습니다.