2013-10-22 36 views
0

我试图使用带有内嵌代码ASP.NET WebFroms ListView控件(全球化,Frame.Article来自一个RESX文件):ASP.NET Webforms中ListView中的内联代码?

 <asp:ListView runat="server" ID="demo" ItemType="Quarters<int>"> 
     <LayoutTemplate> 
        <strong><%# Frame.Article %></strong>       
        <strong><%# Frame.Customer %></strong> 
        <asp:PlaceHolder runat="server" ID="itemPlaceholder" /> 
     </LayoutTemplate> 
     <ItemTemplate> 
      <p><%# Item.Q1 %></p> 
     </ItemTemplate> 
    </asp:ListView> 

代码背后:

Quarters<int> quarter = new Quarters<int>(); 
quarter.Q1 = 10; 
quarter.Q2 = 20; 
quarter.Q3 = 30; 
quarter.Q4 = 40; 

demo.DataSource = new List<Quarters<int>>(){quarter}; 
demo.DataBind(); 

但我始终得到这个错误:

Compiler Error Message: CS1061: 'System.Web.UI.WebControls.ListView' does not contain a definition for 'DataItem' and no extension method 'DataItem' accepting a first argument of type 'System.Web.UI.WebControls.ListView' could be found (are you missing a using directive or an assembly reference?)

是否有反正做这项工作?

+0

是什么框架?这是一堂课吗? – Derek

+0

你在代码背后做了些什么? – Izikon

+0

框架是resx文件构建的类。所以Frame.Article返回一个字符串,其中包含单词“article”的翻译。 – Oliver

回答

3

遇到同样的问题后才碰到这个。在这里发布答案,以防将来有人做同样的事情。

原因是LayoutTemplate中的数据绑定表达式(例如<%# Frame.Article %>)。 ASP.NET不支持此类模板中的数据绑定表达式。

最简单的解决上述的具体问题是搬完表达出ListView模板即:

<strong><%# Frame.Article %></strong>       
    <strong><%# Frame.Customer %></strong> 
    <asp:ListView runat="server" ID="demo" ItemType="Quarters<int>"> 
    <LayoutTemplate> 
     <asp:PlaceHolder runat="server" ID="itemPlaceholder" /> 
    </LayoutTemplate> 
    <ItemTemplate> 
     <p><%# Item.Q1 %></p> 
    </ItemTemplate> 
</asp:ListView>