我有一个显示游戏列表的页面 (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 中更改。当我想在另一场比赛中改变比赛进程时,问题就开始了。回传后第一场比赛的旧费率值...
非常感谢您的帮助...我迷路了