2012-05-16 2 views
4

데이터 소스를 GridView에 바인딩하려고하지만 데이터 소스가 동적이기 때문에 작동하지 않습니다. 누가 내게 도움이 될 수 있습니까? 감사합니다.C#에서 동적 문법을 사용하는 방법?

/* ***C#을 ** * ** * */

List<dynamic> dyList = new List<dynamic>(); 
dynamic info1 = new ExpandoObject(); 
info1.FFID = 1; 
info1.Name = "Bill1"; 

dynamic info2 = new ExpandoObject(); 
info2.FFID = 2; 
info2.Name = "Bill2"; 

dyList.Add(info1); 
dyList.Add(info2); 

Repeater1.DataSource = dyList; 
Repeater1.DataBind(); 

/* ***영문* ** * ***/

<asp:Repeater ID="Repeater1" runat="server"> 
     <ItemTemplate> 
      <%# Eval("FFID") %> <%# Eval("Name") %> 
     </ItemTemplate> 
    </asp:Repeater> 

FFid과 이름을 찾을 수 없습니다, 왜?

답변

5

아마 당신은

<asp:Repeater ID="Repeater1" runat="server"> 
    <ItemTemplate> 
     <%# ((dynamic)Container.DataItem).FFID %> 
    </ItemTemplate> 
</asp:Repeater> 


또는 IDictionary<string, object>-dynamic에 항목을 캐스팅합니다. (ExpandoObject 구현)

<asp:Repeater ID="Repeater1" runat="server"> 
    <ItemTemplate> 
      <%# ((IDictionary<string, object>)Container.DataItem)["FFID"] %> 
    </ItemTemplate> 
</asp:Repeater> 
관련 문제