我有一个表行,它将我的分页控件保存在ListView
中,如下所示(部分布局):
<asp:ListView ID="lvOrderItems" runat="server"
DataSourceID="odsShoppingCart"
DataKeyNames="ProductNumber"
ItemPlaceholderID="lvItemContainer">
<LayoutTemplate>
<table id="lvCart" runat="server">
<tr id="lvHeader" runat="server">
...
</tr>
<tr id="lvItemContainer" runat="server"></tr>
<tr id="lvPaging" runat="server">
...
</tr>
</table>
</LayoutTemplate>
在我的代码隐藏中,我按如下方式处理DataBound事件,并且我计划有条件地隐藏整个lvItemContainer
行(现在,我只是试图在没有条件的情况下隐藏行本身):< / p>
Protected Sub lvOrderItems_DataBound(ByVal sender As Object, ByVal e As EventArgs) Handles lvOrderItems.DataBound
Dim lvItemContainer As HtmlTableRow = CType(lvOrderItems.FindControl("lvItemContainer"), HtmlTableRow)
If Not lvItemContainer Is Nothing Then
Response.Write("hit1")
lvItemContainer.Visible = False
End If
Dim lvPaging As HtmlTableRow = CType(lvOrderItems.FindControl("lvPaging"), HtmlTableRow)
If Not lvPaging Is Nothing Then
Response.Write("hit2")
lvPaging.Visible = False
End If
End Sub
因此,如果此问题在DataBound
上运行,则hit1
永远不会被解雇,但{{1}}是......任何想法在这里发生了什么?
答案 0 :(得分:3)
HTML纯粹主义者不喜欢它,但这种方法有效:
在OnLayoutCreated事件中,请尝试以下方法之一:
从表格和子行中取出 runat =“server”,然后执行以下操作:
<asp:Panel ID="pnlItemContainer" runat="server">
<tr id="lvItemContainer"></tr>
</asp:Panel>
pnlItemContainer.Visible = false;
或者你可以这样做:
<tr id="lvItemContainer" runat="server"></tr>
编辑:嵌入式样式元素,因为设置可见为false在布局模板中不起作用。
lvItemContainer.Style["display"] = "none";
我不确定它如何与布局模板一起使用,但在其他情况下它对我有用。
答案 1 :(得分:0)
我没有尝试(失败地)调整ItemPlaceholderID
容器的可见性,而是设置了容器中各行的可见性。