我在转发器中有一个名为thumbviewer的控件。我想设置它的图像 码。目前它已经在aspx中完成了
<asp:Repeater ID="Repeater1" runat="server" >
<ItemTemplate>
<span style="padding:2px 10px 2px 10px">
<bri:ThumbViewer Id="Th1" runat="server" ImageUrl='<%# Eval("Name", "images/{0}") %>' Height="100px" Width="100px"/>
</span>
</ItemTemplate>
</asp:Repeater>
如何在代码中设置ImageUrl?
答案 0 :(得分:6)
protected void rpter_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
ThumbViewControl control = e.Item.FindControl("Th1") as ThumbViewControl;
if (control != null)
{
control.ImageUrl = "";
}
}
}
和aspx
<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="rpter_ItemDataBound" >
<ItemTemplate>
<span style="padding:2px 10px 2px 10px">
<bri:ThumbViewer Id="Th1" runat="server" Height="100px" Width="100px"/>
</span>
</ItemTemplate>
</asp:Repeater>
我个人会这样做。
如果你想获取它的数据,那么我相信e.Item.DataItem(或类似的东西)得到它。
干杯,
Ť
答案 1 :(得分:2)
你的转发器有一个onitemdatabound事件。
<asp:Repeater ID="Repeater1" runat="server" onitemdatabound="Repeater1_ItemDataBound"></asp:Repeater>
在您的代码中,您可以拥有一个名为
的事件处理程序protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
// ensure that we only look in the item template for our control
if( e.Item.ItemType == ListItemType.Item)
{
ThumbViewer tv = (ThumbViewer)e.Item.FindControl("Th1");
tv.ImageUrl = "images/"+((<The object type you are binding>)e.Item.DataItem).Name;
}
}
这是访问绑定到转发器的数据的最正统方式。 IMHO
HTH
答案 2 :(得分:0)
您需要找到转发器,然后查看控件:
我在这里做了类似的事情并将控件加载到转发器内的占位符中..
if (ResultRepeater != null && ResultRepeater.HasControls())
{
foreach (Control oControl in ResultRepeater.Controls)
{
if (oControl != null && oControl is RepeaterItem)
{
PlaceHolder oSuggestMorePlaceholder = (PlaceHolder) oControl.FindControl("SuggestMorePlaceholder");
if (oSuggestMorePlaceholder != null)
{
SuggestMoreTabbedControl oTabbedControl = (SuggestMoreTabbedControl) Page.LoadControl("controls/SuggestMoreControl.ascx");
if (oTabbedControl != null)
{
oSuggestMorePlaceholder.Controls.Add(oTabbedControl);
}
}
}
}
}