Как динамически назначить источник данных для просмотра списка - PullRequest
2 голосов
/ 03 мая 2009

У меня проблема с динамическим назначением источника данных для просмотра списка.

Например, у меня есть список receiveBonuses (Bonus), receiveLeaves (Leave), и я хочу, чтобы listview отображал эти элементы списка в зависимости от того, какую кнопку ссылки пользователь нажал.

Изучая интернет и stackoverflow.com, я нашел 3 решения:

  1. Использование повторителя внутри списка. Но в моем случае я не смог применить его к своему делу, и я запутался

  2. Использование вложенных списков. Я пытался сделать так:

</p> <p> </p> <pre><code> <asp:ListView ID = "bonuses" runat="server" DataSource ='<%# Eval("received_bonuses") %>' > <ItemTemplate> <tr> <td><%# Eval("bonus_desc")%></td> <td><%# Eval("bonus_type")%></td> </tr> </ItemTemplate> <LayoutTemplate> <table> <tr> <th>Bonus Description</th> <th>Bonus Received Date</th> </tr> <tr ID="itemPlaceholder" runat="server" /> </table> </LayoutTemplate>

             <table>

                    <tr>

                        <th>Bonus Description</th> 

                        <th>Bonus Received Date</th>



                    </tr>

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

                        </table>

        </LayoutTemplate>

</asp:ListView>


    <br />

и на обратном коде я пытался написать так: protected void dataBound(object sender, ListViewItemEventArgs e) { this.DataBindChildren();</p> <pre><code> }

Он не дал никаких ошибок, он просто не работал.

  1. Использование пейджера данных

Понятия не имею, как применить его к моему делу.

Любая помощь приветствуется.

Большое спасибо.

Ответы [ 2 ]

4 голосов
/ 23 января 2011

Все, что вам нужно сделать на стороне сервера, это изменить свойство DataSource или DataSourceID и вызвать DataBind в ListView.

При использовании синтаксиса <% # Eval ("")%> необходимо убедиться, что объекты, с которыми вы связываетесь, имеют те свойства, которые названы в Eval. Таким образом, у вас могут возникнуть проблемы с переключением источников данных, когда к вашим свойствам добавляется имя типа и подчеркивание. Что, как говорится. Есть 2 варианта у вас есть изменение источника данных. В случае нажатия кнопки или любого другого механизма переключения, который вы используете, вы можете просто написать что-то вроде.

Не используется источник данных в разметке:

List<Bonus> bonusList = GetBonuses();
MyListView.DataSource = bonusList;
MyListView.DataBind();

Использование источника данных в разметке:

//where bonus list would be the id of the datasource in the markup
MyListView.DataSourceID= "BonusList"; 

MyListView.DataBind();
0 голосов
/ 03 мая 2009

Вам нужно сделать это динамически? Если у вас есть только «бонус» и «оставить», вы не можете создать два списка просмотра, а затем просто сделать логику отображения для видимого = true / false списка, основанного на нажатой кнопке ссылки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...