2

ゲーム リスト (videogames.aspx) を表示するページがあります。ユーザー コントロールを使用して各ビデオゲームを表示する更新パネル内に DataGrid があります。(game.ascx) 私のビデオゲーム ページで使用されます。

このユーザーコントロールでは、ゲームの進行状況を言うことができます(ASPボタンを使用して、終了、プレイなど)

リストを表示するときにゲームを評価できるようにしたいと思います。そのために、私はhttp://www.wbotelhos.com/raty/を使用します

別のユーザーコントロールを作成しました(レート用)。game.ascx ユーザーコントロール内でこのユーザーコントロールを使用します。

初めてページの読み込みに問題がない場合 (現在のレートは表示されています)、最初のゲームでレートを変更して試してみることにしました。レートは webmethods を使用してデータベースに保存され、javascript によって画面に表示されます。 .

今、私は 2 番目のビデオゲームの進行状況を変更することに決めました。この時点 (ポストバック) では、最初のゲームの評価は以前の評価値に戻っています...

updatepanel が 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>

私のgame.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>

rate によって生成される 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>

評価値を表示するために data-rating 属性を使用します。私の場合、新しいレートの後の値は 3.5 になります。私の webmethod は適切に呼び出され、値はデータベースに保存されます。新しい data-rating は html で変更されます。問題は、別のゲームでゲームの進行を変更したいときに始まります。ポストバック後に最初のゲームの古いレート値が戻ってきます...

助けてくれてありがとう...私は迷っています

4

0 に答える 0