2

我有一个显示游戏列表的页面 (videogames.aspx) 我在更新面板中有一个 DataGrid,它使用用户控件来显示每个视频游戏。(game.ascx) 在我的视频游戏页面中使用。

在这个用户控件中,我可以说游戏中的进展(完成,玩等......通过使用 asp 按钮)

现在我希望在显示列表时能够对游戏进行评分。为此,我使用http://www.wbotelhos.com/raty/

我创建了另一个用户控件(用于速率)。我在我的 game.ascx 用户控件中使用这个用户控件。

第一次加载页面时我没有问题(我当前的费率是显示)我决定在第一次尝试的游戏中更改我的费率,我的费率使用 webmethods 很好地保存在数据库中,并通过 javascript 很好地显示在屏幕上.

现在我决定改变我在第二个电子游戏中的进度,此时(回发)我的第一个游戏的评分回到我原来的评分值......

我的印象是我的更新面板保留了 ViewState 中的旧值,不是吗?

我该如何摆脱这种情况?

视频游戏.aspx:

<asp:UpdatePanel ID="Update" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:DataGrid ID="dgJeux" runat="server" AutoGenerateColumns="false" OnItemDataBound="dgJeux_ItemDataBound" AllowPaging="true" PagerStyle-Position="TopAndBottom"
    PageSize="10" GridLines="None" CssClass="table" ShowHeader="false" OnPageIndexChanged="dgJeux_PageIndexChanged">
    <PagerStyle Mode="NumericPages" HorizontalAlign="Right" CssClass="paginationASP"/>
    <Columns>
        <asp:BoundColumn DataField="jeu_id" Visible="false"></asp:BoundColumn>
        <asp:TemplateColumn HeaderText="Jeu" ItemStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Middle">
            <ItemTemplate>
                <UC:UCJeu ID="ucJeu" runat="server"></UC:UCJeu>
            </ItemTemplate>
        </asp:TemplateColumn>
    </Columns>
</asp:DataGrid>
</ContentTemplate>
</asp:UpdatePanel>

我的游戏.ascx:

<table>
<tr>
    <td><UC:UCNote ID="ucNote" runat="server"></UC:UCNote></td>

    <td class="pull-right">
        <asp:Repeater ID="rptAvancementJeu" runat="server" Visible="false" OnItemDataBound="rptAvancementJeu_ItemDataBound">
            <HeaderTemplate>
                <div class="btn-group" data-toggle="buttons-checkbox">
            </HeaderTemplate>
            <ItemTemplate>
                <asp:Button ID="butAvancementJeu" CssClass="btn btn-success" runat="server" Text='<%# Eval("jeuavancement_libelle") %>' OnCommand="butAvancementJeu_OnCommand" CommandName="ChangerAvancement" Width="85"/>
            </ItemTemplate>
            <FooterTemplate>
                </div>
            </FooterTemplate>
        </asp:Repeater>
</tr>
</table>

我的 GameRate.Ascx :

<script type="text/javascript">

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
function EndRequestHandler(sender, args) {
    if (args.get_error() == undefined) {
        $(document).ready(function() {
            $('#<%= noteMoyenne.ClientID %>').raty({
                score: function () {
                    return $('#<%= noteMoyenne.ClientID %>').attr('data-rating');
                },
                readOnly: true
            });
            $('#<%=noteUtilisateur.ClientID %>').raty({
                half: true,
                click: function (score, evt) {
                    var contexte = new Array('<%= noteUtilisateur.ClientID %>', '<%= noteMoyenne.ClientID %>');
                    PageMethods.AffecteNoteEtRetourneNoteMoyenne($('#<%= hfObjectID.ClientID %>').val(), score, AffecterNoteEtMoyenne, null, contexte)
                },
                score: function () {
                    return $('#<%= noteUtilisateur.ClientID %>').attr('data-rating');
                }
            });
        });
    } 
}

</script>
<table>
<asp:Panel ID="pnlNoteUtilisateur" runat="server" Visible="false">
    <tr>
        <td>
            Note : 
        </td>
        <td>
            <div id="noteUtilisateur" runat="server"></div>
            <asp:HiddenField ID="hfObjectID" runat="server" />
        </td>
    </tr>
</asp:Panel>
<tr>
    <td>
        Moyenne : 
    </td>
    <td>
        <div id="noteMoyenne" runat="server"></div>
    </td>
</tr>
<tr>
    <td></td>
    <td>
        <asp:Label ID="lblNombreNotes" runat="server" Text="(pas de note)"></asp:Label>
    </td>
</tr>
</table>

由 raty 生成的 html 示例:

<div id="ctl00_content_dgJeux_ctl03_ucJeu_ucNote_noteUtilisateur" data-rating="0.5"     style="cursor: pointer; width: 100px;">
<img src="../img/stars/star-half.png" alt="1" title="Beurk">
<img src="../img/stars/star-off.png" alt="2" title="Mauvais">
<img src="../img/stars/star-off.png" alt="3" title="Pas mal">
<img src="../img/stars/star-off.png" alt="4" title="Bon">
<img src="../img/stars/star-off.png" alt="5" title="Addictif">
<input type="hidden" name="score" value="0.5">
</div>

它使用数据评级属性来显示评级值。就我而言,在我的新汇率之后,该值将是 3.5。我的 webmethod 调用得很好,值保存在数据库中。新的数据评级在 html 中更改。当我想在另一场比赛中改变比赛进程时,问题就开始了。回传后第一场比赛的旧费率值...

非常感谢您的帮助...我迷路了

4

0 回答 0