在asp.net Repeater中使用相册

时间:2012-01-02 16:22:26

标签: asp.net data-binding

我正在尝试在Repeater中为组合生成PhotoAlbum(ListView),但我无法让DataSource正常工作。

基本上我有一个Flickr帐户,转发器会根据相册查找图像,并在ListView中显示这些图像,但我无法将相册ID作为参数才能正常工作。

目前我在转发器中也有ObjectDataSource代码,而不是CodeBehind页面,但它仍然无法正确解析Album Id。

<asp:ObjectDataSource ID="odsPhotos" runat="server" 
                EnablePaging="True" OldValuesParameterFormatString="original_{0}"
                SelectCountMethod="GetPagedSetCount" 
                SelectMethod="GetPagedSet" TypeName="Infrastructure.BLL.FlickrBLL" OnSelecting="odsPhotos_Selecting">
               <SelectParameters>
                       <asp:Parameter DefaultValue="<%# Eval(Container.DataItem, "ProjPhotos")%>" Name="setId"  Type="String" />
               </SelectParameters>
           </asp:ObjectDataSource>

我不断得到的错误:字面内容('

2 个答案:

答案 0 :(得分:0)

试试这个

 <asp:Parameter DefaultValue='<%# Eval(Container.DataItem, "ProjPhotos")%>' Name="setId"  Type="String" />

它可能是字面串联问题。

答案 1 :(得分:0)

错误是通过使用单引号而非tan a dobule引用来解决的,就像@IamStalker建议的那样。当你在表达式中使用双引号时,你总是必须这样做。

我认为你应该把Containder.DataItem放在一边,就像这样:

<SelectParameters> 
    <asp:Parameter DefaultValue='<%# Eval("ProjPhotos")%>' Name="setId"  Type="String" /> 
</SelectParameters> 

但是你真的需要为每个转发器项目(转发器中的转发器)提供单独的数据源吗?我认为你应该将对象数据源放在转发器之外。

第二个选项是从代码隐藏文件初始化数据源。