我在listview中有一个LinkButton InsertItemTemplate。我希望从代码背后设置谁的可见性。我正在使用此代码,但似乎在应用断点时控件未到达InsertItemTemplate。它只停留在ItemTemplate中。
protected void Page_Load(object sender, EventArgs e)
{
if (Session["UserId"].ToString() == Request.QueryString["Id"].ToString())
{
foreach (ListViewItem item in lvAlbums.InsertItem.Items)
{
LinkButton linkButton = item.FindControl("LinkButton1") as LinkButton;
if (linkButton != null)
linkButton.Visible = false;
}
}
}
源代码:
<form id="form1" runat="server">
<asp:ListView ID="lvAlbums" runat="server"
DataSourceID="SqlDataSource1" GroupItemCount="3"
InsertItemPosition="LastItem">
<LayoutTemplate>
<table border="1">
<tr ID="groupPlaceholder" runat="server">
</tr>
</table>
</LayoutTemplate>
<GroupTemplate>
<tr>
<td ID="itemPlaceholder" runat="server">
</td>
</tr>
</GroupTemplate>
<ItemTemplate>
<td id="Td3" width="150px" height="150px" align="center" style="background-color: #e8e8e8;color: #333333;">
<asp:HiddenField ID="hfPhotoID" runat="server" Value='<%# Eval("DefaultPhotID") %>' />
<a href='<%# "Photos.aspx?AlbumID="+Eval("AlbumID") %>'>
<asp:Image CssClass="Timg" runat="server" ID="imPhoto" ImageUrl='<%# "ThumbNail.ashx?ImURL="+Eval("Photo") %>' />
</a>
<br />
<b><asp:Label ID="lblAlbumName" runat="server" Text='<%# Eval("AlbumName") %>'></asp:Label> </b>
</td>
</ItemTemplate>
<InsertItemTemplate>
<td id="Td3" width="150px" height="150px" runat="server" align="center" style="background-color: #e8e8e8;color: #333333;">
<asp:LinkButton ID="LinkButton1" runat="server" PostBackUrl="~/CreateAlbum.aspx"> Create New Album1</asp:LinkButton>
<%-- <a href="CreateAlbum.aspx" id="createalbumlink" runat="server">
Create New Album
</a>--%>
</td>
</InsertItemTemplate>
</asp:ListView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:SLIITComDBConnectionString %>"
SelectCommand="SELECT Album.AlbumID, Album.DefaultPhotID, Album.AlbumName, PhotAlbum.Photo FROM Album INNER JOIN PhotAlbum ON Album.DefaultPhotID = PhotAlbum.PhotoID where album.userid=@userid">
<SelectParameters>
<asp:QueryStringParameter Name="userid" Type="int32" QueryStringField="id" />
<%--<asp:SessionParameter Name="userid" Type="String" SessionField="UserId" />--%>
</SelectParameters>
</asp:SqlDataSource>
</form>
答案 0 :(得分:0)
<击>
访问并修改ItemDataBound中listview的ItemTemplate中的LinkButton,而不是page_load
protected void ContactsListView_ItemDataBound(object sender, ListViewItemEventArgs e)
{
Label EmailAddressLabel;
if (e.Item.ItemType == ListViewItemType.DataItem)
{
LinkButton linkButton = e.item.FindControl("LinkButton1") as LinkButton;
if (linkButton != null)
linkButton.Visible = false;
}
}
击> <击> 撞击>
根据评论修改。您可以在Page_Load上隐藏其中的InsertItem或控件。
隐藏InsertItem模板中的特定控件
当您尝试隐藏InsertItemTemplate中的所有项时,您可以使用FindControl访问InsertItem模板并在其中查找控件。您在InsertItem模板中具有标识为LinkButton1
的LinkButton,您可以通过首先在InsertItem中找到它来隐藏它
((LinkButton)lvAlbums.InsertItem.FindControl("LinkButton1")).Visible = false;
隐藏整个InsertItem模板
您可以使用InsertItem
InsertItem
属性完全隐藏Visible
模板。
lvAlbums.InsertItem.Visible = false;