我有一个集合List<Person>
人,而在一个人中有一个国家(Country.Name)。
我已成功将我的转发器绑定到我的收藏中,但是尝试写出国家名称给我带来了一些麻烦,我在我的人员中也有一个bool IsActive,我想显示一个图标而不是真/假。
protected void Page_Load(object sender, EventArgs e)
{
List<Person> persons = GetPersons();
RP_Persons.DataSource = persons;
RP_Persons.DataBind();
}
protected void RP_Persons_OnItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
// How do I get my stuff here? I need to get the country name and be able to use a <div class="active"><img src='xxxx' /></div>
}
}
这是我的标记:
<ItemTemplate>
<tr>
<td><%# DataBinder.Eval(Container.DataItem, "Email") %></td>
<td><%# DataBinder.Eval(Container.DataItem, "Registered") %></td>
<td><%# DataBinder.Eval(Container.DataItem, "Country") %></td>
<td><%# DataBinder.Eval(Container.DataItem, "IsActive") %></td>
<tr>
</ItemTemplate>
答案 0 :(得分:3)
虽然您在答案中提供的方法确实有效,但恕我直言,如您所建议的那样,这种类型的代码更容易在代码隐藏中完成和维护。
您将如何做到这一点:
这是aspx文件的代码:
<ItemTemplate>
<tr>
<td><%# DataBinder.Eval(Container.DataItem, "Email") %></td>
<td><%# DataBinder.Eval(Container.DataItem, "Registered") %></td>
<td><asp:Label id="lblCountry" runat="server" /></td>
<td>
<asp:Image id="imgActive" ImageUrl="~/IMAGE_NAME" runat="server" />
<asp:Image id="imgInactive" ImageUrl="~/IMAGE_NAME" runat="server" />
</td>
<tr>
</ItemTemplate>
aspx.cs文件的代码:
protected void RP_Persons_OnItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Person person = (Person)e.Item.DataItem;
((Label)e.Item.FindControl("lblCountry")).Text = person.Country.Name;
if(person.IsActive) {
((Image)e.Item.FindControl("imgActive")).Visible = True;
((Image)e.Item.FindControl("imgInactive")).Visible = False;
}
else {
((Image)e.Item.FindControl("imgActive")).Visible = False;
((Image)e.Item.FindControl("imgInactive")).Visible = True;
}
}
}
答案 1 :(得分:1)
尽可能简单:
<td><%# DataBinder.Eval(Container.DataItem, "Country.Name") %></td>
现在我只需要弄清楚如何处理布尔值并显示图像而不是true / false。
(编辑) ....我找到了一种在真/假图像之间切换的方法。我觉得它很笨拙,所以我愿意改进。
<%# DataBinder.Eval(Container.DataItem, "IsActive").ToString() == "True" ? "<span class='label label-success'>Active</span>" : "<span class='label'>Inactive</span>"%>