运行Site_materials表,找到的所有匹配项都将它们存储在'NumberOFDeliveries'中, 这是应该在屏幕上显示它们的标签的ID。
//DELIVERIES
int NumberOfDeliveries = (from Deliveries in db.Site_Materials
where Deliveries.Diary_Entry_Id == this.DiaryEntryId
select Deliveries).ToList().Count();
if (NumberOfDeliveries > 0)
{
NoOfDeliveriesOnSite.Text = System.Convert.ToString(NumberOfDeliveries);
}
else
{
NoOfDeliveriesOnSite.Text = "0";
}
如果我在我的aspx页面中使用以下标签,则按预期显示。但我有一个问题,试图在我想要的地方显示它...在FooterTemplate / Panel / SecurePanel / Div
内<FooterTemplate>
<asp:Panel runat="server" ID="AllLinks" HorizontalAlign="Center" Width="600px" >
<mesh:SecurePanel runat="server" ID="EmployeeLink" CssClass="SmallBoxLink" WebMasters="true" Admins="true" Clients="true" Employees="true">
<div style="height:25px; margin-top:12px; margin-bottom:12px;">
<asp:Label ID="Delivery" runat="server" Text="Deliveries=" /><asp:Label ID="NoOfDeliveriesOnSite" runat="server" />
正如我所说,这段代码工作正常并显示正确的数量(当在aspx页面上的差异处使用时)但是当我尝试将其显示在我想要的地方时我得到错误: 来自cs。页面说明'NoOfDeliveriesOnSite'不存在。
关于为什么
的任何想法答案 0 :(得分:2)
如果它在页脚中,则需要将控制号设置为-1。在这个例子中,我在页脚中有一个标签,我想要处理:
dim myLabel as label
myLable = myDataRepeater.Controls(myDataRepeater.Controls.Count - 1).FindControl("lableName")
如果您正在尝试在用户控件中找到控件,则可能需要添加notehr .FindControl方法即:
myLable = myDataRepeater.Controls(myDataRepeater.Controls.Count - 1).FindControl("lableName").findControls("anotherControl")
答案 1 :(得分:1)
你必须在他们所在的任何容器内找到控件。
您需要将此添加到您在问题中提供的代码示例上方,以便您对该变量的引用有效:
SecurePanel EmployeeLink = (SecurePanel)AllLinks.FindControl("EmployeeLink");
Label NoOfDeliveriesOnSite = (Label)EmployeeLink.FindControl("NoOfDeliveriesOnSite");
根据您FooterTemplate
的所有内容(GridView
,FormView
等),您可能需要首先在其中找到“AllLinks”Panel
同样。