Utiliser un rating control dans une GridView
Partie cliente, page aspx
<asp:GridView runat="server" ID="theGridView" AutoGenerateColumns="false" > <Columns> <asp:TemplateField> <ItemTemplate> <table> <tr> <td colspan="2"> <%# Eval("texte") %> </td> </tr> <tr> <td> <act:Rating ID="RatingBlague" runat="server" MaxRating="6" CssClass="ratingStar" StarCssClass="ratingItem" WaitingStarCssClass="Saved" FilledStarCssClass="Filled" EmptyStarCssClass="Empty" BorderStyle="None" CurrentRating='<%# Eval("Rang") %>' Tag='<%# Eval("Id") %>' OnChanged="RatingBlague_Changed"> </act:Rating> </td> </tr> </table> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView>
CSS
/*RATING*/ .ratingStar { white-space: nowrap; margin: 1em; height: 14px; border-style:none; border-color:transparent; } .ratingStar .ratingItem { font-size: 0pt; width: 25px; height: 25px; margin: 0px; padding: 0px; display: block; background-repeat: no-repeat; cursor: pointer; } .ratingStar .Filled { background-image: url(images/ratingStarFilled2.png); } .ratingStar .Empty { background-image: url(images/ratingStarEmpty2.png); } .ratingStar .Saved { background-image: url(images/ratingStarSaved2.png); }
CodeBehind
protected void RatingBlague_Changed(object sender, AjaxControlToolkit.RatingEventArgs e) { int idElement = Convert.ToInt32(e.Tag); int theRate = Convert.ToInt32(e.Value); LaMéthodeAdéclencher(idElement, theRate); }
La méthode à déclencher sera en générale une insertion dans une base de données.
Pour récupérer la note moyenne, il faudra faire une requete permettant de récupérer celle-ci.