我有一个ASP.NET转发器控件,我想隐藏某些列,具体取决于另一个变量的状态。
这是转发器代码以及代码隐藏。
<asp:Repeater runat="server" ID="rptAnimalPatients">
<ItemTemplate>
<tr>
<td><%#DataBinder.Eval(Container.DataItem, "OwnerFirstName") %></td>
<td><%#DataBinder.Eval(Container.DataItem, "OwnerLastName") %></td>
<td><%#DataBinder.Eval(Container.DataItem, "AnimalID") %></td>
<td><%#DataBinder.Eval(Container.DataItem, "Status") %></td>
</tr>
</ItemTemplate>
</asp:Repeater>
private void LoadRecentlyCompletedReviews()
{
var animalList = patientRepository.GetAnimals().ToList();
rptAnimalPatients.DataSource = animalList;
rptAnimalPatients.DataBind();
}
如何根据运行时检索到的数据隐藏/删除某些列?例如,假设这个动物名单来自没有所有者的动物收容所。我想隐藏/删除OwnerFirstName
和OwnerLastName
列。然而,如果列表是来自普通家庭兽医的动物列表,我想显示这些列。只是不确定如何从后面的代码中以编程方式删除某些列。
答案 0 :(得分:2)
在td <td id="tdOwner" runat="server">
在绑定集之前:
rptAnimalPatients.ItemDataBound += rptAnimalPatients_ItemDataBound;
和下一个:
void rptAnimalPatients_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType != ListItemType.Item && e.Item.ItemType != ListItemType.AlternatingItem)
return;
var tdOwner= (HtmlGenericControl)e.Item.FindControl("tdOwner");
tdOwner.Visible=//make code to true or false
}