Как заставить UpdatePanel внутри ListView работать? - PullRequest
5 голосов
/ 01 августа 2010

У меня есть страница со списком, которая показывает что-то вроде сообщений.На каждом посте должен быть «ящик с оценками», который работает аналогично кнопке «Нравится» в Facebook.Поле оценки - это пользовательский элемент управления, внутри которого есть панель обновления.

Если я поместил элемент управления с некоторыми случайными значениями на странице, он прекрасно работает - но когда я помещаю его в ListView, где он долженнаходиться, это не сработает.Вызывается метод, но ничего не происходит.

Я немного упростил код, чтобы его было легче понять:

Элемент управления "Rate Box":

    protected void OnRateClick(object sender, ImageClickEventArgs e)
    {
        Rate++;
        RateAmountLiteral.Text = Rate.ToString();
        RateButton.Visible = false;
        FeedbackLiteral.Visible = true;

        rateButtonPanel.Update();
    }

ascx:

<div class="rate_div">
    <asp:UpdatePanel ID="rateButtonPanel" runat="server" UpdateMode="Conditional">
        <ContentTemplate>
            <fieldset>
                Rate:
                <asp:Literal ID="RateAmountLiteral" runat="server"></asp:Literal>
                <asp:ImageButton ID="RateButton" runat="server" ImageUrl="icn_rate.png"
                    OnClick="OnRateClick" />
                <asp:Literal ID="FeedbackLiteral" runat="server" Visible="false">Thanks for rating!</asp:Literal>
            </fieldset>
        </ContentTemplate>
    </asp:UpdatePanel>
</div>

aspx (с использованием элемента управления):

                     <asp:ListView ID="PostsView" runat="server" ItemPlaceholderID="itemPlaceHolder2"
                        <LayoutTemplate>
                            <div class="posts_div">
                                <asp:PlaceHolder ID="itemPlaceHolder2" runat="server" />
                            </div>
                        </LayoutTemplate>
                        <ItemTemplate>
                            <div class="post_div">
                                <div class="post_body">
                                    <%# CurrentPost.Body %>
                                </div>
                                <UC:RatingBox id="RatingBox" runat="server" 
                                PostID="<%# CurrentPost.ID %>"
                                Rate="<%# CurrentPost.Rate %>"/>
                                By: <a href="<%# CurrentPost.Author.LinkToProfile %>">
                                    <%# CurrentPost.Author.DisplayName %>
                                </a>&nbsp;|&nbsp;
                                <%# CurrentPost.LiteralTime %>
                            </div>
                        </ItemTemplate>
                    </asp:ListView>

Во время отладки я заметил, что элементы управления в методе "OnRateClick" пусты и не содержат правильных значений,Пожалуйста посоветуй.

Также, если у вас есть какие-либо комментарии о том, как я поступил, не сдерживайтесь.

Спасибо

1 Ответ

0 голосов
/ 21 января 2014

Есть много вещей, которые вы, возможно, не настроили, я не могу отличить только от фрагмента кода, который вы дали. Но убедитесь, что вы делаете следующее: -

1) Поместите ScriptManager "" на страницу.

Если вы используете главную страницу в своем приложении, а ваша веб-страница использует главную страницу, поместите менеджер сценариев на главную страницу. Или, в качестве альтернативы, вы также можете в любом случае разместить менеджер сценариев на определенных веб-страницах.

2) Добавьте триггеры для кнопки RateButton на панели обновлений.

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