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



我可以使用AmazonSimpleDB获得一堆图像URL。我正在努力了解将URL绑定到中继器并创建照片库的最佳方法。中继器可能不是最好的数据控制,所以如果你能想出更好的方法,我愿意接受建议。

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页面的设计模式下,选择中继器并单击右上角。单击"选择的数据源",添加新的数据源。您选择对象(如果需要,请重命名它(,然后单击"确定"。

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

然后要使用它,只需调用<%#项目模板中的Eval("Value"(%>,例如:

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

Eval函数查找属性,字符串除了"Length"属性外没有任何属性。这就是为什么您需要制作一个stringwrapper,以便Eval可以调用Value属性并获得字符串值。

相关内容

  • 没有找到相关文章

最新更新