我可以使用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 [String]的URL,但我在网上看到的所有例子都使用带有Eval类型语句的内联DataBinding SQL类型函数。
在.aspx页面中,我是否必须设置除ItemTemplate以外的任何内容?
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
//How do I direct my DataSource here?
</ItemTemplate>
</asp:Repeater>
答案 0 :(得分:0)
您需要在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方法”并单击“终止”。
然后使用它,只需调用&lt;%#Eval(“Value”)%&gt;在你的ItemTemplate中,例如:
<ItemTemplate>
<img src='<%# Eval("Value") %>' />
</ItemTemplate>
Eval函数查找属性,字符串除“Length”属性外没有其他属性。这就是为什么你需要创建一个stringwrapper,以便Eval可以调用Value属性并获取字符串值。