整整一天花了很多时间,并且在没有帮助的情况下搜索了尽可能多的网站。
我在asp.net页面上有一个隐藏的面板,直到用户点击linkbutton
为止。该面板包含DataList
。这是.aspx:
<asp:Panel ID="pnlManageYourGallery" Visible="false" runat="server">
<div style="width:70%; height:90%; position:fixed; left:200px; top:10px; background-color:White; background-color:#f1f1f1 ">
<center>
<h1>Manage Your Gallery</h1></center>
<div style="position:absolute; top:50px; left:25px; margin-left:auto; margin-right:auto; height:90%; width:50%; background-color:white; overflow:auto;">
<asp:DataList ID="dlManageGallery" runat="server" DataSourceID="SqlDataSourceManageGallery" RepeatDirection="Horizontal" RepeatLayout="Flow" DataKeyField="RecNum">
<ItemTemplate>
<div style="position:relative; background-color:#fafad2; padding:10px; margin:10px; border: 5px solid #b0c4de; border-radius: 3px; width:90%;">
<p>Image No.
<%# Eval( "RecNum") %> Uploaded
<%# Eval( "UploadDate") %>
</p>
<center><img src='<%# Eval("ImageFilename") %>' width="50%" /></center>
<br /> Caption:
<asp:TextBox ID="txtImageCaption" Width="400" Text='<%# Eval("Caption") %>' runat="server"></asp:TextBox>
<br />
<br />
<center>
<asp:Panel id="pnlImageControls" visible="true" runat="server">
<asp:LinkButton ID="lnkDeleteImage" CommandName="DeleteImage" Text="Delete this image" runat="server"></asp:LinkButton>
<asp:LinkButton ID="lnkSaveImageChanges" CommandName="SaveChanges" CommandArgument='<%# Eval("RecNum") %>' Text="Save Changes" runat="server"></asp:LinkButton>
</asp:Panel>
</center>
</div>
</ItemTemplate>
</asp:DataList>
<asp:SqlDataSource ID="SqlDataSourceManageGallery" runat="server" ConnectionString="<%$ ConnectionStrings:MyConnectionString2 %>" SelectCommand="SELECT [RecNum], [ImageFilename], [Caption], [UploadDate] FROM [tblGallery] ORDER BY [RecNum] DESC">
</asp:SqlDataSource>
</div>
<asp:Panel ID="pnlImageDeleteWarning" Visible="false" runat="server">
<div style="position:fixed; left:600px; top:300px; background-color:White; border:5px solid red; padding:10px;">
<center>
<p style="color:Red; font-weight:bold;">Are you sure you want to delete this image?</p>
<asp:Button ID="btnDeleteImage" CommandName="DeleteImageConfirm" CommandArgument='<%# Eval("RecNum") %>' Text="Yes, delete this image" runat="server" />
<asp:Button ID="btnCancelDelete" CommandName="DoNotDelete" text="No, do not delete" runat="server" />
</center>
</div>
</asp:Panel>
</div>
</asp:Panel>
可以看出,DataList中的每个数据项都包含包含其他控件的面板。我需要做的是,点击lnkDeleteImages
链接后,pnlImageControls
面板应隐藏,pnlImageDeleteWarning
应显示。这是代码隐藏的原因:
Private Sub dlManageGallery_ItemCommand(source As Object, e As System.Web.UI.WebControls.DataListCommandEventArgs) Handles dlManageGallery.ItemCommand
Dim pnlImageControls As Panel = CType(e.Item.FindControl("pnlImageControls"), Panel)
Select Case e.CommandName
Case "DeleteImage"
pnlImageControls.Visible = False
pnlImageDeleteWarning.Visible=True
End Select
End Sub
现在,我已经尝试了我可以在互联网上找到的FindControl
方法的每个变体,但没有任何效果。
但是,在断点处调试时,在即时窗口中使用? pnlImageControls.visible
,在单击之前返回值“true”,在单击后返回“false”。控制认为它是隐形的,但事实并非如此。
我甚至尝试过 - 没有期待一个好的结果 - 一个更新小组,我得到了我所期待的。
好的,这就是它在这个页面上的位置。我在同一个项目中有另一个.aspx页面,我正在做同样的事情 - 在一个datalist项目模板中设置一个面板的visible属性 - 它工作得很好。 两个页面之间唯一不同的是它所使用的页面是一个独立的页面,即不是site.master的一部分。它不工作的页面是的一部分,位于ContentPlaceHolderID="MainContent"
块中的site.master。所以我尝试进行findcontrol
钻孔通过MainContent块向下到Datalist ItemTemplate。当我这样做时,它会在到达面板时抛出Null Reference错误。
我希望我已经正确解释了这一点。
有人能告诉我我做错了什么吗?