Utiliser un rating control dans une GridView

 01/01/2019 |   Admin |  C#


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.