Как добавить новый элемент вверху ListView с помощью EditItemTemplate

У меня есть немного кода, где вы можете добавить новое поле с помощью кнопки добавления, которая активирует asp:EditItemTemplate, но дело в том, что это добавляет поле внизу списка, заставляя пользователя прокручивать вниз, если есть достаточно элементов уже в ListView. Как сделать так, чтобы новый элемент отображался вверху списка?

КОД ASP.NET

<asp:ListView ID="[...]" runat="server" DataSource=<% [...] %> >

    <LayoutTemplate>
        [...]
    </LayoutTemplate>

    <ItemTemplate>
        [...]
    </ItemTemplate>

    <EditItemTemplate>
        <tr>
                <td>
                    <asp:LinkButton id="btnUpdate" visible=<%# [...] %> runat="server" CommandName="Update"><%#res.GetString("btnUpdate")%></asp:LinkButton> 
                    <asp:LinkButton id="btnCancel" runat="server" CommandName="Cancel"><%#res.GetString("bntCancel")%></asp:LinkButton>

                </td>
                <td>
                    <asp:HiddenField ID="[...]" runat="server" Value='<%# [...] %>' />
                    <asp:TextBox ID="txtDisplayName" runat="server" Text=<%# Bind("DisplayName") %> Enabled=<%# [...] %> />
                </td>
        </tr>
    </EditItemTemplate>
</asp:ListView>

person JF Beaulieu    schedule 13.06.2011    source источник
comment
Я смущен. Вы говорите о кнопке добавления, но я не вижу ее в вашем коде.   -  person Tim Schmelter    schedule 13.06.2011


Ответы (2)


Я нашел решение, вам нужно создать InsertItemTemplate вот так:

<asp:ListView ID="[...]" runat="server" DataSource=<% [...] %> >
    <LayoutTemplate>
        [...]
    </LayoutTemplate>

    <ItemTemplate>
        [...]
    </ItemTemplate>

    <EditItemTemplate>
        [...]
    </EditItemTemplate>

    <InsertItemTemplate>
    <tr>
                    <td>
                        <asp:LinkButton id="btnUpdate" visible=<%# [...] %> runat="server" CommandName="Update"><%#res.GetString("btnUpdate")%></asp:LinkButton> 
                        <asp:LinkButton id="btnCancel" runat="server" CommandName="Cancel"><%#res.GetString("bntCancel")%></asp:LinkButton>

                    </td>
                    <td>
                        <asp:HiddenField ID="[...]" runat="server" Value='<%# [...] %>' />
                        <asp:TextBox ID="txtDisplayName" runat="server" Text=<%# Bind("DisplayName") %> Enabled=<%# [...] %> />
                    </td>
            </tr>
    </InsertItemTemplate>
</asp:ListView>

затем вам нужно перейти в окно свойств вашего ListView, установить InsertItemPosition на FirstItem.

person JF Beaulieu    schedule 13.06.2011

Немного поздний ответ для этого форума, но вы можете изменить команду SELECT, чтобы упорядочить список по идентификатору в таблице SQL.

Пример:

SelectCommand="ВЫБЕРИТЕ * ИЗ [Бюллетеня] ORDER BY [m_id] DESC;"

Я создал бюллетень в стиле форума в своем проекте и хотел, чтобы последние сообщения появлялись вверху. Вот как я закончил это делать. Конечно, это предполагает, что для вашей таблицы SQL "ID" установлено автоматическое увеличение.

person Cody Hicks    schedule 03.07.2013