2014-04-11 59 views
0

我有我想要生成我的電子郵件數據作爲圖像的列表視圖。 Follwing是我的代碼。如何在列表視圖中生成文本爲圖像ItemTemplate

<%@ Import Namespace="System.Drawing" %> 
<%@ Import Namespace="System.Drawing.Text" %> 
<%@ Import Namespace="System.Drawing.Imaging" %> 
<%@ Import Namespace="System.Drawing.Drawing2D" %> 

<asp:ListView ID="lvtest" runat="server" 
     CellPadding="0" 
     RepeatDirection="Horizontal" 
     GroupPlaceholderID="itemPlaceholdersp" 
     ItemPlaceholderID="itemPlaceholdersp" > 
     <LayoutTemplate> 
      <asp:PlaceHolder ID="itemPlaceholdersp" runat="server"></asp:PlaceHolder> 
     </LayoutTemplate> 
     <ItemTemplate> 
      <div class="accordionBg">        
       <h3><%# Eval("UserName") %></h3> 
       <h4> 
        <%# Eval("Designation").ToString() == "" ? "" : Eval("Designation") + "<br/>" %> 
        <%# Eval("Qualification").ToString() == "" ? "" : Eval("Qualification")+ "<br/>" %> 

        <% 
          Response.Clear(); 
          int height = 100; 
          int width = 200; 
          Random r = new Random(); 
          int x = r.Next(75); 

          Bitmap bmp = new Bitmap(width, height, PixelFormat.Format24bppRgb); 
          Graphics g = Graphics.FromImage(bmp); 

          g.TextRenderingHint = TextRenderingHint.AntiAlias; 
          g.Clear(Color.Orange); 
          g.DrawRectangle(Pens.White, 1, 1, width-3, height-3); 
          g.DrawRectangle(Pens.Gray, 2, 2, width-3, height-3); 
          g.DrawRectangle(Pens.Black, 0, 0, width, height); 
          g.DrawString(Eval("Email").ToString(), new Font("Arial", 12, FontStyle.Italic), 
          SystemBrushes.WindowText, new PointF(x,50)); 

          bmp.Save(Response.OutputStream, ImageFormat.Jpeg); 
          g.Dispose(); 
          bmp.Dispose(); 
          Response.End(); 
         %> 
       </h4> 

       <p class="clear"></p> 
      </div> 

      <div class="accordion_content"> 
       <div class="vertical_accordion_content"> 
        <p><%# Eval("Description")%></p> 
       </div> 
      </div> 
     </div> 
    </ItemTemplate> 
</asp:ListView> 

不過,這並不work.error發生的

Databinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control. 

請幫助我。

回答

0

您描述的錯誤不是由您的渲染代碼引起的,而是由於缺少列表視圖的有效數據源引起的。我簡化了一下你的代碼。這應該引起同樣的錯誤(如果我們着眼於實際的標記):

<asp:ListView ID="lvtest" runat="server"> 
    <ItemTemplate> 
     <h3><%# Eval("UserName") %></h3> 
    </ItemTemplate> 
</asp:ListView> 

您正在試圖評估一個UserName財產,但不指定它的來源。你必須直接指定DataSource,或指DataSourceID

<asp:ObjectDataSource ID="MyDataSource" runat="server"></asp:ObjectDataSource> 

<asp:ListView ID="lvtest" runat="server" DataSourceID="MyDataSource"> 
    <ItemTemplate> 
     <h3><%# Eval("UserName") %></h3> 
    </ItemTemplate> 
</asp:ListView> 

注意,上面的也沒有做任何事情,很可能會導致其他錯誤。有關更多詳細信息,請參閱the official documentation或網絡上的其中一個可能的教程。

相關問題