Измените порядок просмотра списка на основе элемента управления внутри listviewitem

#c# #asp.net #html #controls #listviewitem

#c# #asp.net #HTML #элементы управления #listviewitem

Вопрос:

Я пытаюсь создать страницу блога, используя ListView. Я создаю функцию ответа, которая добавляет другой стиль css в listview, когда сообщение содержит parentmessageid.

Это работает. Теперь мне нужно изменить порядок сообщений, чтобы ответное сообщение было помещено под родительским сообщением. Ниже вы найдете мою реализацию:

Функция для источника данных для заполнения Listview:

 protected void LoadMessages(int userid)
{
    Bericht berichten = new Bericht();
    if (berichten.LaadBerichten(userid).Tables.Count > 0)
    {
        ListViewMessages.DataSource = berichten.LaadBerichten(userid);
        ListViewMessages.DataBind();
    }
}
 

Функция для добавления стиля css к элементам, где LabelMessageID содержит значение:

 protected void ListItemMessages_Load(object sender, EventArgs e)
{
    HtmlGenericControl li = (HtmlGenericControl)sender;
    ListViewItem container = (ListViewItem)li.NamingContainer;
    Label LabelParentMessageID = (Label)container.FindControl("LabelParentMessageID");

    if (LabelParentMessageID.Text != string.Empty)
    {
        li.Attributes.Add("class", "reply");
    }
}
 

ASP.NET Источник ListView:

 <asp:ListView ID="ListViewMessages" runat="server">
    <ItemTemplate>
        <li id="ListItemMessages" runat="server" onload="ListItemMessages_Load">
            <img src="<%# Eval("[imagelocation]")%>" alt="image" />
            <div class="top-pointer"></div>
            <div class="pointer"></div>
            <!--Hidden Controls-->
            <asp:Label ID="LabelMessageID" runat="server" Text='<%# Eval("[messageid]")%>' Visible="false"></asp:Label>
            <asp:Label ID="LabelParentMessageID" runat="server" Text='<%# Eval("[parentmessageid]")%>' Visible="false"/>
        </li>
    </ItemTemplate>
</asp:ListView>
 

Может ли кто-нибудь помочь мне с изменением порядка элементов? Потому что я понятия не имею, как это сделать.

Ответ №1:

попробуйте что-то вроде ds.Tables[0].DefaultView.Sort = "SortField DESC";

Комментарии:

1. забыл упомянуть, что ‘berichten. LaadBerichten’ — это набор данных; и я не могу упорядочить по дате или чему-либо еще.. он должен быть упорядочен по родительскому идентификатору сообщения.

2. попробуйте что-нибудь вроде ds. Таблицы [0].DefaultView. Sort = «Поле сортировки DESC»;

Ответ №2:

Решается с использованием хранимой процедуры SQL.