Arraylist 作为中继器数据源(如何从 .aspx 访问)

Posted

技术标签:

【中文标题】Arraylist 作为中继器数据源(如何从 .aspx 访问)【英文标题】:Arraylist as repeater datasource (how to access from .aspx) 【发布时间】:2011-02-08 20:31:09 【问题描述】:

我有一个数组列表:

 Dim downloadsarray As New ArrayList
        downloadsarray.Add(iconlink) 
        downloadsarray.Add(imgpath) 
        downloadsarray.Add(filesize) 
        downloadsarray.Add(description) 

这是我中继器的数据源:

 DownloadsRepeater.DataSource = downloadsarray
    DownloadsRepeater.DataBind()

请您告诉我如何将数组中的项目输出到 .aspx 页面。我通常使用(使用sqldatareader作为数据源时):

    <%#Container.DataItem("1stcolumnnamestring")%>
    <%#Container.DataItem("2ndcolumnnamestring")%>

但这在使用arraylist作为数据源时不起作用。

谢谢。

ps...我知道如何使用 转储所有内容,但我需要单独获取数组中的项目,而不是全部一口气跳到了页面。例如,第 1 项包含链接,第 2 项包含图像路径,第 3 项包含描述。我需要让它们以正确的顺序退出,才能正确构建链接和图标。

【问题讨论】:

【参考方案1】:

尝试使用 Container.DataItem 来获取数组列表的各个元素。

【讨论】:

这让我得到了数组中的所有项目(一口气)不是吗? 否,DataItem 将代表列表中的当前项目,因为它正在被中继器迭代【参考方案2】:

试试

<%# Eval(Container.DataItem) #%> 

【讨论】:

【参考方案3】:

在您的示例中,您应该可以这样做:

 <%# Container.DataItem.ToString() %> 

通常,当绑定到转发器时,每个数据项都包含相同类型的数据。在您的示例中,每个项目都是不同的 - 一个是链接,一个是图像路径等。如果您只想显示那些确切的项目,这很好(尽管我会质疑您是否需要中继器来完成这项工作)。

如果您的意图是显示多个链接,您应该为每个链接创建一个类并将该类的实例添加到您的 ArrayList:

class LinkThing 
  string link;
  string imagePath;
  etc... (do all the usual stuff with properties and constructors)


downloadsarray.Add(new LinkThing(link1, path1, size1, desc1));
downloadsarray.Add(new LinkThing(link2, path2, size2, desc2));

在aspx页面中:

 <%# ((LinkThing)Container.DataItem).link %> 
 <%# ((LinkThing)Container.DataItem).path %> 

【讨论】:

以上是关于Arraylist 作为中继器数据源(如何从 .aspx 访问)的主要内容,如果未能解决你的问题,请参考以下文章

执行 Core Data 迁移时,如何从不同实体的源存储中继承旧值?

qml 使用中继器从 Qlist 绘制折线图

如何使用arraylist作为准备好的语句参数[重复]

使用 jQuery 作为中继上传到图像服务器

如何在 python 中继承类型提示?

如何将视频节点从解析/数据库传递到graphql中继中的节点定义?