2010-10-26 52 views
0

我有一个列表,其中包含有关要显示的图像的信息。每个图像有6个条目包含有关它的信息,并有20个图像。总共6 x 20条目。生成图像列表的最佳方法

listImg[0] = image_name 
listImg[1] = image_url 
listImg[2] = other_info 
listImg[3] = other_info 
listImg[4] = other_info 
listImg[5] = other_info 

现在我想做的是彼此相邻,以显示这些图像,在一个水平线上,在每个图像的底部的图像的名称(重叠,应该只用DIV做标签和一些样式)。问题是,我无法弄清楚生成这个图像列表的最佳方式。

任何建议与代码片段?

感谢 中号

回答

2

也许创建一个类来更好地组织你的图像数据,然后输出您的标记,例如,当从它读

class MyImage 
{ 
    public string Name {get; set;} 
    public string Url {get; set;} 
    public List<string> OtherInfo {get; set;} 
} 

... 

public List<MyImage> MyImages = new List<MyImage>(); 

... 

var img = new MyImage {"Name","http://www.example.com"}); 
img.OtherInfo.Add("Info1"); 
img.OtherInfo.Add("Info2"); 
img.OtherInfo.Add("Info3"); 

string html = ""; 
foreach(var image in MyImages) 
{ 
    // Access image data and write it out. etc. 
    html+= String.Format("<div>{1}{2}</div>",image.Name, image.Url); 
    foreach(var info in image.OtherInfo) 
    { 
     html+= "<div>" + info + "</div"; 
    } 
} 

// Write out your code to a literal, placeholder, etc. 
MyLiteralControl.Text = html; 

你也可以通过实现对后端首先创建您的数据,然后只需通过列表循环在实际标记的网页渲染之前写出来的数据,例如

<html><head></head><body> 

    <div>My Images</div> 
    <% foreach(var image in MyImages) { %> 
     <div><%=image.Name%></div> <!-- format your markup here --> 
    <% } %> 
    </body> 

</html> 

在简单的一维数组之外组织数据将证明在维护和调试您的体系结构方面更加有用。您还可以创建业务对象以用于整个开发过程,因此,如果您需要完成相同或变体的逻辑,那么您的代码将更加有用,并且您可以花更少的时间重写帮助对象。

+0

我喜欢这个想法很多,更好的结构是我需要的,但是写出最好的方法是什么? – Mikael 2010-10-26 15:27:21

0

下面是一些粗糙的伪代码,试图解释:

class ImageInfo 
{ 
    string image_name; 
    string image_url; 
    //leavign out other_info since you don't say you are going to use it 
} 

List<ImageInfo> myImages = new List<ImageInfo>(); 
//load list 

//Bind to listView 
lv_Images.DataSource = myImages; 
lv_Images.DataBind(); 

伪代码为您的ListView

<listView> 
    <itemTemplate> 
    <div> <asp:Label text='<%# Bind("image_name") %>' /><br/><img src='<%# Bind("image_url") %>' /> 
. 
. 
. 
. 

让我知道,如果有什么是混乱...