我可以使用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属性并获得字符串值。