2015-10-13 148 views
0

我有一個ASP.NET中繼器控件,我想根據另一個變量的狀態隱藏某些列。刪除/隱藏asp:repeater代碼中的列

下面是中繼器代碼以及代碼隱藏。

<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列。但是,如果列表是來自普通家庭獸醫的動物列表,我希望顯示這些列。只是不確定如何從代碼後面以編程方式刪除某些列。

回答

2

集標識爲TD <td id="tdOwner" runat="server">

HTML代碼綁定集之前:

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 
}