powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Проблема связать GridView с ObjectDataSource / плиз хелп
7 сообщений из 7, страница 1 из 1
Проблема связать GridView с ObjectDataSource / плиз хелп
    #33975438
Фотография slishnevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеется GridView1 связанный с ObjectDataSource1:

<anthem:GridView ID="GridView1" runat="server" DataSourceID="ObjectDataSource1">

ObjectDataSource1 связан с компонентом, который работает с Google поисковым веб сервисом:

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="doGoogleSearch" TypeName="Google.GoogleSearchService">

Метод doGoogleSearch возвращает комплексную структуру GoogleSearchResult состоящюю из простых полей и ещё одного обьека ResultElement, который является коллекцией (массивом) результатов поиска.

Проблема в том что при запуске в моём GridView1 отображаются все простые поля возвращаемые запросом doGoogleSearch.

А мне надо чтобы GridView1 баиндился именно на коллекцию результатов поиска, то есть на обьект ResultElement.

Как это расписать аттрибутами я никак не могу понять.
Если у кого нибудь есть идея, пожалуйста подскажите.

Меня интересует прежде все как можно обойтись только аттрибутами на уровне HTML и не писать никакого кода.

Заранее Спасибо.
...
Рейтинг: 0 / 0
Проблема связать GridView с ObjectDataSource / плиз хелп
    #33975626
Фотография slishnevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кто нибудь ?
...
Рейтинг: 0 / 0
Проблема связать GridView с ObjectDataSource / плиз хелп
    #33975786
Vadim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется GridView1 связанный с ObjectDataSource1 :

<anthem:GridView ID="GridView1" runat="server" DataSourceID="ObjectDataSource1">

ObjectDataSource1 связан с компонентом, который работает с Google поисковым веб сервисом:

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="doGoogleSearch" TypeName="Google.GoogleSearchService">

Метод doGoogleSearch возвращает комплексную структуру GoogleSearchResult состоящюю из простых полей и ещё одного обьека ResultElement , который является коллекцией (массивом) результатов поиска.

Проблема в том что при запуске в моём GridView1 отображаются все простые поля возвращаемые запросом doGoogleSearch .

А мне надо чтобы GridView1 баиндился именно на коллекцию результатов поиска, то есть на обьект ResultElement.

Как это расписать аттрибутами я никак не могу понять.
Если у кого нибудь есть идея, пожалуйста подскажите.

Меня интересует прежде все как можно обойтись только аттрибутами на уровне HTML и не писать никакого кода.

Заранее Спасибо.


Получается, что коллекцию ResultElement нужно биндить на еще один GridView(либо Repeater, либо DataList), который будет внутри твоего основного GridView.
...
Рейтинг: 0 / 0
Проблема связать GridView с ObjectDataSource / плиз хелп
    #33975910
Dimon aka Manowar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделай helper метод, который будет возвращать ResultElement и уже его используй в ObjectdataSource

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
...
Рейтинг: 0 / 0
Проблема связать GridView с ObjectDataSource / плиз хелп
    #33975973
Фотография slishnevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim,
Возможно... но как? GridView1 связывается тол;ко по простым полям и не понимает сложных структур.

Dimon aka Manowar,
то что всё это можно сделать написав дополнительный код - это понятно, это не проблема.

Меня интересует как можно сделать так чтобы никакого кода вообще не писать. И не потому что я ленивый :) а потому что мне интерестно получится ли установить взаимосвязь между asp.net контролами таким образом чтобы получить желаемый результат.

Было бы очень круто если бы возможно было бы увязать 2 ObjectDataSourca вместе:

ObjectDataSourcе1 (соединён с компонентом GoogleSearchService) возвращает нечто что состоит из нескольких простых полей и одного сложного (resultElements[])
ObjectDataSourcе2 (соединён с ObjectDataSourcе1) и возвращает именно resultElements[] от ObjectDataSourcе1

Ну и GridView соединён с ObjectDataSourcе2, и соответственно показывает содержимое resultElements[] в виде списка результатов.

Буду благодарен если имеются какие либо идеи на сей счёт.
...
Рейтинг: 0 / 0
Проблема связать GridView с ObjectDataSource / плиз хелп
    #33976349
Vadim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vadim,
Возможно... но как? GridView1 связывается тол;ко по простым полям и не понимает сложных структур.


Можно попробовать так:


<asp:GridView CellPadding="0" DataSourceID="ObjectDataSource1"  ID="ResultGridView" runat="server" AutoGenerateColumns="False">
<Columns>
  <asp:TemplateField HeaderText="Header">
    <ItemTemplate>
    <asp:Repeater runat="server" id="SecondLevel" DataSource='<%# Eval("resultElements") %>'>
        <ItemTemplate>
           <!-- вывод твоих данных -->
        </ItemTemplate>
      </asp:Repeater>
    </ItemTemplate>
  </asp:TemplateField>
</Columns>
</asp:GridView>        
        
        <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="doGoogleSearch" TypeName="Google.GoogleSearchService">


Т.е. забиндить коллекцию на внутренний Repeater(или GridView)!
...
Рейтинг: 0 / 0
Проблема связать GridView с ObjectDataSource / плиз хелп
    #33976679
Фотография slishnevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, Вадим, Дима

Извращаться со встроенными контролами я не решился.

Как сделать так как я хотел в начале я так и не нашёл.

Решил разбить решение на 2 части и сделал как подсказал Дима, дополнительный метод который возвращает resultElements:
Google.ResultElement resultElements[]

Затем я сажаю ObjectdataSource1 на этот метод, тогда можно обойтись одним GridView, но нужно прописать кастинг к типу элемента, чтоб добраться до полей:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="ObjectDataSource1">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:Label ID="Label1" runat="server" Text='<%# ((Google.ResultElement)Container.DataItem).title %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>
 
Иными сло вами, если data source это Google.ResultElement resultElements[] - то есть массив обьектов типа Google.ResultElement, то используя синтаксис из ASP.NET 1.x, можно получить значение отдельного поля обьекта Google.ResultElement:
<%# ((Google.ResultElement)Container.DataItem).title %>
 
Эквивалента этому синтаксису в ASP.NET 2.0 я пока не нашёл.
Если кто в курсе, подскажите. Спасибо.
 
 
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Проблема связать GridView с ObjectDataSource / плиз хелп
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]