Peter Koller
Peter Koller

Reputation: 310

Place RequiredFieldValidator inside a asp:DataList

I have a problem with placing RequiredFieldValidator into a DataList, and some assistance would be greatly appreciated.

Problem description:

When I place the <asp:RequiredFieldValidator>inside the <ItemTemplate> and run the page I get the following error page:

enter image description here

When I place it outside of it, the page works with no error, but obviously it cannot identify witch <asp:TextBox> does not have content in it, before it is posted back. And I would like to make where it is able to tell if a particular text box in the data list does not have text entered.

Here is the markup: (the Image src attribute is not implemented yet)

            <asp:DataList ID="imageUploadRoster" runat="server"
            DataSourceID="ImageUploadRosterDataSource" RepeatDirection="Horizontal" RepeatColumns="5" HorizontalAlign="Left">
            <HeaderTemplate>
                <h3>Set Image Names</h3>
            </HeaderTemplate>
            <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" Height="180px" Width="180px" />
            <ItemTemplate>
                <div class="imageSetNameDiv">
                    <asp:HiddenField ID="ImageId" runat="server" Value='<%# Eval("ImageId") %>' />
                    <asp:HiddenField ID="ImageMimeTypeLabel" runat="server" Value='<%# Eval("ImageMimeType") %>' />

                    <asp:Image ID="ImageThumbnailLabel" runat="server" Src='<%# Eval("ImageThumbnail") %>' Width="120px" Height="120px" />
                    <br />
                              <asp:RequiredFieldValidator ID="imageNameRequired" runat="server" 
                        ControlToValidate="ImageName" ErrorMessage="RequiredFieldValidator" 
                        ValidationGroup="imageUploadValid">

                    </asp:RequiredFieldValidator>
                    <asp:TextBox ID="ImageName" runat="server" Text='<%# Eval("ImageName") %>' />


                    <br />

                    <hr />
                    <asp:Button ID="removeImage" runat="server" Text="Remove" CommandName="delete" CommandArgument='<%# Eval("ImageId") %>' />
                </div>
            </ItemTemplate>
        </asp:DataList>

Thank you in advance for any assistance. Peter

Upvotes: 0

Views: 280

Answers (1)

Andrei
Andrei

Reputation: 56716

This error happens when ASP.NET encounters two controls with the same ID on the page. I guess for some reason in your case validators for each item get the same ID. Setting the following property:

ClientIDMode="Predictable"

for validator should fix it. This mode makes sure control in databound context gets correct ID.

Upvotes: 1

Related Questions