2009-07-15 8 views
0

저자/날짜가 비어 있는지 (저자/날짜가 없거나 시스템이 표시되지 않도록 설정되어 있는지) 확인하기 위해 데이터 바인딩 된 경우 리피터의 각 항목을 검사하는 코드 숨김이 있습니다. 해당 레이블을 지우십시오. 이것은 저자 및/또는 날짜가 지정되지 않은 경우 "게시 기준"과 같은 것을 얻지 못합니다. 여기 데이터 바인딩 된 항목에서 속성 이름을 검색 할 수 있습니까?

코드입니다 :

protected void Page_Load(object sender, EventArgs e) 
{ 
    repeater.ItemDataBound += new RepeaterItemEventHandler(repeater_ItemDataBound);  
} 

void repeater_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
    { 
     Literal PostedBy = (Literal)e.Item.FindControl("litPostedBy"); 
     Literal PostedOn = (Literal)e.Item.FindControl("litPostedOn"); 
     string Author = (string)DataBinder.Eval(e.Item.DataItem, "Author"); 
     string Date = (string)DataBinder.Eval(e.Item.DataItem, "PubDate"); 

     if (string.IsNullOrEmpty(Author)) 
     { 
      if (string.IsNullOrEmpty(Date)) 
      { 
       PostedBy.Text = ""; 
       PostedOn.Text = ""; 
      } 
      else 
      { 
       PostedBy.Text = "Posted "; 
      } 

     } 
    } 
} 

나는 CMS를 사용하고, 나는 모든 속성이 e.Item.DataItem에 어떤 확신입니다. 거기에 DataItem 통해 루프 및 속성 이름/값을 인쇄 할 수있는 몇 가지 방법이 있나요?

감사합니다.

답변

2

DataItem에 포함될 속성은 개체의 종류에 따라 다릅니다. 리피터를 데이터 바인딩 할 때 현재 처리중인 데이터 소스의 오브젝트를 포함합니다. 나는의 '저자'보이지 않는 것을 제외하고,

Chars [System.Char] 
Length [System.Int32] 
+0

좋아 그게 좋은 정보를 다음 방법은 물건을 받아 여기에 포함 된 속성을 나열합니다 (문자열 인스턴스)

private static void PrintAllProperties(object obj) { obj.GetType(). GetProperties(). ToList(). ForEach(p => Console.WriteLine("{0} [{1}]", p.Name, p.PropertyType.ToString() )); } 

예 출력을 결과. 내가 할 수있는 뭔가가 있습니까? – Anders

+0

제공된 메서드에 중단 점을 설정하면 디버거에서 obj를 검사 할 수 있습니다. 그러면 어떤 종류의 객체가 들어 왔는지 정확히 알 수 있습니다. –

관련 문제