Укажите заполнитель элемента, установив для свойства ID элемента управления значение “itemPlaceholder”.

StackOverflow https://stackoverflow.com/questions/1897581

Вопрос

У меня есть только одна страница "Default.aspx" и один элемент управления ListView.Почему я получаю эту ошибку.Никогда раньше не случалось

"В ListView должен быть указан заполнитель элемента 'ListView1'.Укажите заполнитель элемента, установив для свойства ID элемента управления значение "itemPlaceholder".Элемент управления заполнителем элемента также должен указывать runat="server"."

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="TesterConcepts._Default"%>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>

        </div>
        <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" 
            onselecting="ObjectDataSource1_Selecting" SelectMethod="GetItemsCollection" 
            TypeName="TesterConcepts.CutomDataSource">
            <SelectParameters>
                <asp:Parameter Name="items" Type="Object" />
            </SelectParameters>
        </asp:ObjectDataSource>
        <asp:ListView ID="ListView1" runat="server" DataSourceID="ObjectDataSource1" 
            onselectedindexchanged="ListView1_SelectedIndexChanged">
        </asp:ListView>    
    </body>
    </html>

делать это было бесполезно даже

<asp:ListView ID="ListView1" runat="server" DataSourceID="ObjectDataSource1"
     OnSelectedIndexChanged="ListView1_SelectedIndexChanged"
        ItemPlaceholderID="PlaceHolder1">
</asp:ListView>
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>

Теперь он выдает это исключение

"В ListView должен быть указан заполнитель элемента 'ListView1'.Укажите заполнитель элемента, установив для свойства ID элемента управления значение "PlaceHolder1".Элемент управления заполнителем элемента также должен указывать runat="server""

Это было полезно?

Решение

Похоже, вам нужно определить структуру элемента-заполнителя для элементов item, которые вернет запрос.

Я бы посоветовал прочитать эту статью.Немного устарел, но иллюстрирует концепцию.http://www.4guysfromrolla.com/articles/122607-1.aspx

Другие советы

В ListView шаблон макета - это шаблон, который определяет макет отображения данных .У него должен быть тег-заполнитель элемента с атрибутом runat=”server”.

Поскольку LayoutTemplate и ItemTemplate для ListView определены отдельно, нам нужен какой-то способ сообщить LayoutTemplate: "Эй, для каждой отображаемой записи поместите сюда разметку отображаемого элемента". Это достигается путем добавления серверного элемента управления со значением ID, указанным свойством ItemPlaceholderID в ListView.

Ссылка - http://www.4guysfromrolla.com/articles/122607-1.aspx

Следовательно, вам придется 1) Определить ItemsTemplate 2) Добавить заполнитель в LayoutTemplate

<tr runat="server" id="itemPlaceholder">
                    </tr>

или

<ItemTemplate>
                <tr>
                    <td>
                        <asp:Label ID="MessageLabel" runat="server" Text='<%# Eval("Item") %>' />
                    </td>
                    <td>
                        <asp:Label ID="URLLabel" runat="server" Text='<%# Eval("URL") %>' />
                    </td>
                </tr>
        </ItemTemplate>

Таким образом, окончательный Дизайн будет выглядеть следующим образом

<asp:ListView ID="NoticeItemsListView" runat="server">
            <LayoutTemplate>
                <table width="200px">
                    <tr>
                        <th>
                            Message
                        </th>
                        <th>
                            URL
                        </th>
                    </tr>
                    <tr runat="server" id="itemPlaceholder">
                    </tr>
                </table>
            </LayoutTemplate>
            <ItemTemplate>
                <tr>
                    <td>
                        <asp:Label ID="MessageLabel" runat="server" Text='<%# Eval("Item") %>' />
                    </td>
                    <td>
                        <asp:Label ID="URLLabel" runat="server" Text='<%# Eval("URL") %>' />
                    </td>
                </tr>
            </ItemTemplate>
        </asp:ListView>

Внутри вашего ListView вы должны добавить LayoutTemplate, содержащий заполнитель:

   <asp:ListView ID="listview1" runat="server" ItemPlaceholderID="PlaceHolder1" >
        <LayoutTemplate>
            <asp:PlaceHolder ID="PlaceHolder1" runat="server" />
        </LayoutTemplate>
        <ItemTemplate>
            ...
        </ItemTemplate>
    </asp:ListView>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top