繁体   English   中英

如何从图像URL列表创建图像库?

[英]how can I create an image gallery from a list of image URLs?

我可以使用Amazon SimpleDB获得一堆图像URL。 我试图了解将URL绑定到Repeater并创建相册的最佳方法。 中继器可能不是最好的数据控件,因此,如果您能想到一种更好的方法,我欢迎您提出建议。

List<string> imgURLS = new List<string>();    

String selectExpression = "Select * From Gallery Where Category = 'imgurls'";
SelectRequest selectRequestAction = new SelectRequest().WithSelectExpression(selectExpression);
SelectResponse selectResponse = sdb.Select(selectRequestAction);

if (selectResponse.IsSetSelectResult())
{
    SelectResult selectResult = selectResponse.SelectResult;
    foreach (Item item in selectResult.Item)
    {
        Console.WriteLine("  Item");
        if (item.IsSetName())
        {
           imgURLS.Add(item.Value)  //the URL of the image
        }
    }
}

 Repeater1.DataSource = imgURLS;
 Repeaster1.DataBind();

在此示例中,我只是构建URL的List [string],但我在网上看到的所有示例都使用带有Eval类型语句的内联DataBinding SQL类型函数。

在.aspx页中,我是否需要设置除ItemTemplate以外的任何东西?

<asp:Repeater ID="Repeater1" runat="server">
    <ItemTemplate>
   //How do I direct my DataSource here?
    </ItemTemplate>
</asp:Repeater>

您需要在App_Code目录中的项目中添加两个类。

一个将包含字符串类的包装器(我称为StringWrapper),另一个将包含List类型的方法。 最后一个方法将返回您的imgURLS列表。

public class StringWrapper
{
    public string Value
    { get; set; }
    public StringWrapper(string s)
    {
        this.Value = s;
    }

    public static implicit operator StringWrapper(string s)
    {
        return new StringWrapper(s);
    }
}

public static class Tools
{
    public static List<StringWrapper> GetImgUrls()
    {
        List<StringWrapper> imgURLS = new List<StringWrapper>();    

        String selectExpression = "Select * From Gallery Where Category = 'imgurls'";
        SelectRequest selectRequestAction = new SelectRequest().WithSelectExpression(selectExpression);
        SelectResponse selectResponse = sdb.Select(selectRequestAction);

        if (selectResponse.IsSetSelectResult())
        {
            SelectResult selectResult = selectResponse.SelectResult;
            foreach (Item item in selectResult.Item)
            {
                Console.WriteLine("  Item");
                if (item.IsSetName())
                {
                   imgURLS.Add(item.Value)  //the URL of the image
                }
            }
        }
        return imgURLS;
    }
}

然后在设计模式下的aspx页面上,选择转发器,然后单击右上角。 您单击选择的数据源,添加新的数据源。 选择对象(如果需要,可以重命名),然后单击“确定”。

然后,取消选中该复选框以查看所有可以使用的对象,选择创建的类的名称(此处为“工具”)。 您单击下一步,然后选择GetImgUrls方法,然后单击终止。

然后,要使用它,只需在ItemTemplate中调用<%#Eval(“ Value”)%>,例如:

    <ItemTemplate>
        <img src='<%# Eval("Value") %>' />
    </ItemTemplate>

Eval函数查找属性,并且字符串除了“ Length”属性外没有其他属性。 这就是为什么需要制作一个字符串包装程序,以便Eval可以调用Value属性并获取字符串值的原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM