I am using Listview to populate users ratings on particular item. Now I have product in which 4 people voted. But it's not showing stars filled correctly. e.g. if rating score is 4 then it filled with 5 stars.
Listview
<form id="form1" runat="server">
<asp:ToolkitScriptManager ID="sc1" runat="server"></asp:ToolkitScriptManager>
<div>
<table class="table table-bordered">
<tr>
<td>Ratings</td>
<td>Stars</td>
</tr>
<asp:ListView ID="lvReviews" runat="server">
<ItemTemplate>
<tr>
<td>
<asp:Label ID="rates" runat="server" Text='<%# Eval("ratingGiven") %>'></asp:Label>
</td>
<td>
<asp:Rating ID="Rating1" runat="server" ClientIDMode="Static" StarCssClass="star fa fa-star" EmptyStarCssClass="empty fa fa-star" WaitingStarCssClass="WaitingStar fa fa-star" FilledStarCssClass="FilledStar fa fa-star" MaxRating="5" CurrentRating='<%# Eval("ratingGiven") %>' ReadOnly="true">
</asp:Rating>
</td>
</tr>
</ItemTemplate>
</asp:ListView>
</table>
</div>
</form>
Code Behind
using Microsoft.VisualBasic;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using MySql.Data.MySqlClient;
partial class ratings : System.Web.UI.Page
{
string query;
private void ratings_Load(object sender, EventArgs e)
{
if (!this.IsPostBack) {
this.bindReviews();
}
}
private void bindReviews()
{
try {
query = "SELECT * FROM reviews WHERE status = 'active' and productID = @productID ORDER BY ID DESC";
string conString = ConfigurationManager.ConnectionStrings("conio2").ConnectionString;
MySqlConnection con = new MySqlConnection(conString);
MySqlCommand cmd = new MySqlCommand(query);
cmd.Parameters.AddWithValue("@productID", "1111");
con.Open();
MySqlDataAdapter da = new MySqlDataAdapter();
cmd.Connection = con;
da.SelectCommand = cmd;
DataTable dt = new DataTable();
da.Fill(dt);
ViewState("Data") = dt;
lvReviews.DataSource = dt;
lvReviews.DataBind();
con.Close();
} catch (Exception ex) {
Response.Write(ex);
}
}
public ratings()
{
Load += ratings_Load;
}
}