ListView使用多个变量评估项目模板

时间:2012-07-16 17:19:47

标签: asp.net .net listview data-binding

我正在尝试在ListView控制器的项目模板中打印出包含图像标记的行。我尝试过这种方法却没有成功。

<ItemTemplate>
  <tr id="itemTemplate" runat="server">
    <td>
      <asp:Literal ID="litImg" runat="server" Text='<%= "<img src="" & PathtoImg & "ProcessImage.aspx?Img=" & Eval("Img") & "&amp;PID="Resize"" alt=""ProductID"" />")))) %>' />
     </td>
     <td>
         <asp:Literal ID="litID" runat="server" Text='<%# Eval("Department") %>' />
     </td>
    </tr>
</ItemTemplate>

第一个eval不起作用(并且是一个集群)第二个简单的行。 它没有错误,但显示

  

显然这不起作用

<img src="<%= PathtoImg %>ProcessImage.aspx?Img=<%= Eval("Img")%>&amp;PID=Resize" alt="ProductID" />

因为它给出了错误

  

“Eval(),XPath()和Bind()等数据绑定方法只能是   用于数据绑定控件的上下文中。 “

这是我第一次使用Listview,我对这些模板非常不熟悉。是我想要的 - 在图像标签的src中显示带有服务器变量的数据项 - 可能吗?

1 个答案:

答案 0 :(得分:0)

使用代码隐藏功能或runat =“server”HTML控件:

<强>标记:

<ItemTemplate>
  <tr id="itemTemplate" runat="server">
    <td>
       <asp:Image id="Image1" runat="server" 
                    ImageUrl="<% GetImageUrl(Eval("Img"), PathToImg))%>"/>
     </td>   
    </tr>
</ItemTemplate>

<强>代码隐藏:

protected string GetImageUrl(object img, string pathToImg)
{
     //example business logic, change for your needs
     //build your url etc....
     string imgPathFromDb = (string)img;

     return PathToImg + imgPathFromDb; 

}

其他选择:

<img runat="server" src="<%# PathtoImg %>ProcessImage.aspx?Img=<%# Eval("Img")%>&amp;PID=Resize" alt="ProductID" />