时间:2015-10-13 20:39:48

标签: c# asp.net

我有一个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();
}

如何根据运行时检索到的数据隐藏/删除某些列?例如,假设这个动物名单来自没有所有者的动物收容所。我想隐藏/删除OwnerFirstNameOwnerLastName列。然而,如果列表是来自普通家庭兽医的动物列表,我想显示这些列。只是不确定如何从后面的代码中以编程方式删除某些列。

1 个答案:

答案 0 :(得分:2)

在td <td id="tdOwner" runat="server">

的html代码中设置ID

在绑定集之前:

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
}