im trying to create a method that creates a list with the name of all the child elements of the DetalsView that have a type string.
The closest I got:
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"; } }
However, all this happens, repeats once in the first foreach, and then exits (i.e. dv.Controls returns only one element). If I use FindControl, I can go to the elements, but that means I have to do this for each element.
Any plasters?
Thanks!
Edit: here is my DetailsView (I cut out some things that only have more controls to fit the page):
<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> </InsertItemTemplate> </asp:TemplateField> <asp:TemplateField> <HeaderTemplate> <h1> Item Description:</h1> <p> The description of the item.</p> </HeaderTemplate> <ItemTemplate> <asp:Label runat="server" ID="lblItemDescription" Text='<%# Bind("itemDescription") %>'></asp:Label> </ItemTemplate> <InsertItemTemplate> <asp:TextBox runat="server" ID="tbItemDescription"></asp:TextBox> </InsertItemTemplate> </asp:TemplateField> <asp:TemplateField> <HeaderTemplate> <h1> Item Image:</h1> <p> The image of the item.</p> </HeaderTemplate> <ItemTemplate> <asp:Image runat="server" ID="imgItem" Width="40px" Height="40px" /> </ItemTemplate> <InsertItemTemplate> <asp:TextBox ReadOnly="true" runat="server" ID="tbItemImage"></asp:TextBox> </InsertItemTemplate> </asp:TemplateField> <asp:TemplateField> <HeaderTemplate> <h1> Item Type:</h1> <p> Specifies the item type.</p> </HeaderTemplate> <ItemTemplate> <asp:Label ID="lblItemType" Text='<%# Eval("itemType") %>' runat="server" /> </ItemTemplate> <%-- <InsertItemTemplate> <asp:DropDownList AutoPostBack="true" OnSelectedIndexChanged="ddlItemTypes_SelectedIndexChanged" DataTextField="itemType" DataValueField="typeId" DataSourceID="sqldsTier1Category" ID="ddlItemTypes" runat="server"> </asp:DropDownList> <asp:SqlDataSource ConnectionString="<%$ ConnectionStrings:myDbConnection%>" ID="sqldsTier1Category" runat="server" SelectCommand="dbo.getItemCategories" SelectCommandType="StoredProcedure"> </asp:SqlDataSource> </InsertItemTemplate>--%> </asp:TemplateField> <asp:TemplateField> <HeaderTemplate> <h1> Item SubType:</h1> <p> Specifies the sub-item type.</p> </HeaderTemplate> <ItemTemplate> <asp:Label ID="lblSubItemType" Text='<%# Eval("itemSubType") %>' runat="server" /> </ItemTemplate> <%-- <InsertItemTemplate> <asp:DropDownList OnDataBound="ddlItemSubTypes_OnDataBound" AutoPostBack="true" DataTextField="itemSubType" DataValueField="subTypeId" DataSourceID="sqldsTier2Category" ID="ddlItemSubTypes" runat="server"> </asp:DropDownList> <asp:SqlDataSource ConnectionString="<%$ ConnectionStrings:myDbConnection%>" ID="sqldsTier2Category" runat="server" SelectCommand="dbo.getItemSubCategories" SelectCommandType="StoredProcedure"> <SelectParameters> <asp:ControlParameter ControlID="dwNewItem$ddlItemTypes" Name="typeId" PropertyName="SelectedValue" DbType="Int16" /> </SelectParameters> </asp:SqlDataSource> </InsertItemTemplate>--%> </asp:TemplateField> <asp:TemplateField> <HeaderTemplate> <h1> Item SubSubType:</h1> <p> Specifies the sub-sub-item type.</p> <p> <i>Not always applicable.</i></p> </HeaderTemplate> <ItemTemplate> <asp:Label ID="lblSubSubItemType" Text='<%# Eval("itemSubSubType") %>' runat="server" /> </ItemTemplate> <%-- <InsertItemTemplate> <asp:DropDownList DataTextField="itemSubSubType" DataValueField="subSubTypeId" DataSourceID="sqldsTier3Category" ID="ddlItemSubSubTypes" runat="server"> </asp:DropDownList> <asp:SqlDataSource ConnectionString="<%$ ConnectionStrings:myDbConnection%>" ID="sqldsTier3Category" runat="server" SelectCommand="dbo.getItemSubSubCategories" SelectCommandType="StoredProcedure"> <SelectParameters> <asp:ControlParameter ControlID="dwNewItem$ddlItemSubTypes" Name="subTypeId" PropertyName="SelectedValue" DbType="Int16" /> </SelectParameters> </asp:SqlDataSource> </InsertItemTemplate>--%> </asp:TemplateField> <asp:TemplateField> <HeaderTemplate> <h1> Requires Sword Swinger Class?</h1> <p> Specifies whether the item can only be used by the Sword Swinger.</p> </HeaderTemplate> <ItemTemplate> <asp:CheckBox ID="cbReqSwordSwinger" Text='<%# Bind("requiresSwordSwinger") %>' runat="server" /> </ItemTemplate> <%-- <InsertItemTemplate> <asp:CheckBox runat="server" ID="cbReqSwordSwinder" /> </InsertItemTemplate>--%> </asp:TemplateField> <asp:TemplateField> <HeaderTemplate> <h1> Requires Rat Catcher Class?</h1> <p> Specifies whether the item can only be used by the Rat Catcher.</p> </HeaderTemplate> <ItemTemplate> <asp:CheckBox ID="cbReqRatCatcher" Text='<%# Bind("requiresRatCatcher") %>' runat="server" /> </ItemTemplate> <InsertItemTemplate> <asp:CheckBox runat="server" ID="cbReqRatCatcher" /> </InsertItemTemplate> </asp:TemplateField> <asp:TemplateField> <HeaderTemplate> <h1> Requires Spell Mumbler Class?</h1> <p> Specifies whether the item can only be used by the Spell Mumbler.</p> </HeaderTemplate> <ItemTemplate> <asp:CheckBox ID="cbReqSpellMumbler" Text='<%# Bind("requiresSpellMumbler") %>' runat="server" /> </ItemTemplate> <InsertItemTemplate> <asp:CheckBox runat="server" ID="cbReqSpellMumbler" /> </InsertItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderStyle-CssClass="colorBlue dwHeader"> <HeaderTemplate> <h1> Strength permanently added:</h1> <p> Specifies the amount of strength the item permanently adds to your character.</p> <p> <i>Only available when the item is set to type "Consumable"</i></p> </HeaderTemplate> <ItemTemplate> <asp:Label ID="lblPermanentStrength" Text='<%# Bind("permanentStrength") %>' runat="server" /> </ItemTemplate> <InsertItemTemplate> <asp:TextBox Enabled="false" runat="server" ID="tbItemPermanentStr"></asp:TextBox> </InsertItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderStyle-CssClass="colorBlue dwHeader"> <HeaderTemplate> <h1> Agility permanently added:</h1> <p> Specifies the amount of agility the item permanently adds to your character.</p> <p> <i>Only available when the item is set to type "Consumable"</i></p> </HeaderTemplate> <ItemTemplate> <asp:Label ID="lblPermanentAgility" Text='<%# Bind("permanentAgility") %>' runat="server" /> </ItemTemplate> <InsertItemTemplate> <asp:TextBox Enabled="false" runat="server" ID="tbItemPermanentAgl"></asp:TextBox> </InsertItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderStyle-CssClass="colorBlue dwHeader"> <HeaderTemplate> <h1> Magical Power permanently added:</h1> <p> Specifies the amount of magical power the item permanently adds to your character.</p> <p> <i>Only available when the item is set to type "Consumable"</i></p> </HeaderTemplate> <ItemTemplate> <asp:Label ID="lblPermanentMagicalPower" Text='<%# Bind("permanentMagicalPower") %>' runat="server" /> </ItemTemplate> <InsertItemTemplate> <asp:TextBox Enabled="false" runat="server" ID="tbItemPermanentMP"></asp:TextBox> </InsertItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderStyle-CssClass="colorBlue dwHeader"> <HeaderTemplate> <h1> Health Points restored:</h1> <p> Specifies the amount of health points the item restores.</p> <p> <i>Only available when the item is set to type "Consumable"</i></p> </HeaderTemplate> <ItemTemplate> <asp:Label ID="lblHPRestored" Text='<%# Bind("restoresHealthPoints") %>' runat="server" /> </ItemTemplate> <InsertItemTemplate> <asp:TextBox Enabled="false" runat="server" ID="tbItemRestoresHp"></asp:TextBox> </InsertItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderStyle-CssClass="colorBlue dwHeader"> <HeaderTemplate> <h1> Mana Points restored:</h1> <p> Specifies the amount of mana points the item restores.</p> <p> <i>Only available when the item is set to type "Consumable"</i></p> </HeaderTemplate> <ItemTemplate> <asp:Label ID="lblManaRestored" Text='<%# Bind("restoresMana") %>' runat="server" /> </ItemTemplate> <InsertItemTemplate> <asp:TextBox Enabled="false" runat="server" ID="tbItemRestoresMana"></asp:TextBox> </InsertItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderStyle-CssClass="colorBlue dwHeader"> <HeaderTemplate> <h1> Health Points permanently added:</h1> <p> Specifies the amount of health points the item permanently adds to your character.</p> <p> <i>Only available when the item is set to type "Consumable"</i></p> </HeaderTemplate> <ItemTemplate> <asp:Label ID="lblPermanentHP" Text='<%# Bind("permanentHealth") %>' runat="server" /> </ItemTemplate> <InsertItemTemplate> <asp:TextBox Enabled="false" runat="server" ID="tbItemPermanentHP"></asp:TextBox> </InsertItemTemplate> </asp:TemplateField> </Fields> </asp:DetailsView>
source share