C # — Исключение при попытке установить источник данных ListView

#c# #.net #listview

#c# #.net #listview

Вопрос:

Я пытаюсь установить источник данных ListView с помощью запроса LINQ. Он устанавливает источник данных, как ожидалось, когда я просматриваю свой ListView во время отладки, однако он не обновляется в моей веб-форме.

Просмотр списка моей веб-формы:

 <asp:ListView ID="SampleDisplayControl" runat="server">
                        <LayoutTemplate>   
                            <audio src='<%# Eval("Url") %>' controls="" preload="none"></audio>                                
                        </LayoutTemplate>
                        <ItemTemplate>
                            <asp:Literal ID="label" Text='<%# Eval("Title") %>' runat="server"/>                                     
                        </ItemTemplate>
                    </asp:ListView>
  

Мой серверный:

 try
        {

            SampleDisplayControl.DataSource = from o in getSampleGalleryContainer().GetDirectoryReference("samples").ListBlobs()
                                              select new { Url = o.Uri, Title = GetTitle(o.Uri) };

            SampleDisplayControl.DataBind();
        }
        catch (Exception)
        {
        }
  

Генерируемое исключение:

Выдано исключение: ‘System.Исключение InvalidOperationException’ в System.Web.Extensions.dll

Также завершается набор потоков:

Поток ####### завершился с кодом 0 (0x0).

Я не уверен, почему это не работает, так как в аналогичном проекте я использовал именно этот код раньше без проблем.

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

1. Где вы видите исключение? В вашем коде это обработано, поэтому не должно прерывать загрузку вашей страницы. Форма не обновляется, вероятно, потому, что «обеспечивает сортировку, обновление, удаление и функциональность подкачки с помощью соответствующего события» learn.microsoft.com/en-us/dotnet/api /… . Я бы порекомендовал вам использовать LinqDataSource learn.microsoft.com/en-us/dotnet/api /… в середине, вместо назначения directq результата LINQ ecpression.

2. Я нашел, что это было, мне нужно было установить заполнители в <LayoutTemplate>

Ответ №1:

Проблема была в моем html. Мне нужно было установить заполнители в шаблоне макета и метку and в . Глупая ошибка, поскольку я неправильно понял, как организовать макет.

 <LayoutTemplate>
                            <audio id="itemPlaceholder" controls="" preload="none" runat="server"></audio>                               
                            <asp:Literal ID="labelPlaceholder" runat="server"/>                                        
                        </LayoutTemplate>
                        <ItemTemplate>                           
                            <audio src='<%# Eval("Url") %>' controls="" preload="none"></audio>
                            <asp:Literal ID="label" Text='<%# Eval("Name") %>' runat="server"/>                                                                
                        </ItemTemplate>