我试图创建一个方法,创建一个List,其名称为DetalsView的所有子控件的类型为string.
我得到的最接近的是:
foreach (Control c in dv.Controls)
{
if (c is Label)
{
controlsToCheck.Add(c.ID);
}
}
foreach (string s in controlsToCheck)
{
Label lbl = (Label)dv.FindControl(s);
if (lbl.Text == "")
{
lbl.Text = "None";
lbl.CssClass = "bold";
}
}
Run Code Online (Sandbox Code Playgroud)
但是,所有这一切都是在第一个foreach中迭代一次,然后退出(即dv.Controls只返回一个项目).如果我使用FindControl,我可以到达项目,但这意味着我必须为每个项目做.
任何艰难的?
谢谢!
编辑:这是我的DetailsView(我剪掉了一些东西,只有更多的控件,所以它适合页面):
<asp:DetailsView DefaultMode="ReadOnly" FieldHeaderStyle-CssClass="dwHeader" CssClass="marginLeftRightBottom10px"
AutoGenerateDeleteButton="true" AutoGenerateEditButton="true" GridLines="None"
ID="dvIndividualItem" runat="server" AutoGenerateRows="False" DataSourceID="sqldsSingleItem"
OnDataBound="dvIndividualItem_DataBound">
<Fields>
<asp:TemplateField>
<HeaderTemplate>
<h1>
Item Name:</h1>
<p>
The name of the item.</p>
</HeaderTemplate>
<ItemTemplate>
<asp:Label runat="server" ID="lblItemName" Text='<%# Bind("itemName") %>'></asp:Label>
</ItemTemplate>
<InsertItemTemplate>
<asp:TextBox runat="server" ID="tbItemName"></asp:TextBox> …Run Code Online (Sandbox Code Playgroud)