首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Listview ItemTemplate中将文本生成为图像

如何在Listview ItemTemplate中将文本生成为图像
EN

Stack Overflow用户
提问于 2014-04-11 17:16:00
回答 1查看 50关注 0票数 0

我有一个列表视图,我想在其中生成我的电子邮件数据作为图像。下面是我的代码。

代码语言:javascript
复制
<%@ 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发生的

代码语言:javascript
复制
Databinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control.

请帮帮我。

EN

回答 1

Stack Overflow用户

发布于 2014-04-11 18:17:04

您所描述的错误不是由呈现代码引起的,而是由于列表视图缺少有效的数据源而引起的。我已经稍微简化了你的代码。它应该会导致相同的错误(如果我们查看的是实际的标记):

代码语言:javascript
复制
<asp:ListView ID="lvtest" runat="server">
    <ItemTemplate>
        <h3><%# Eval("UserName") %></h3>
    </ItemTemplate>
</asp:ListView>

您正在尝试计算UserName属性,但未指定该属性的源。您必须直接指定DataSource,或者引用DataSourceID

代码语言:javascript
复制
<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或web上的某个五月教程。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23008369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档