I have made use of the Table desgn from the article
Implement Rating Control in ASP.Net AJAX
And made use of the FyneWorks jQuery Plugin
HTML
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src='http://jquery-star-rating-plugin.googlecode.com/svn/trunk/jquery.rating.js'
type="text/javascript"></script>
<link rel="Stylesheet" href="http://jquery-star-rating-plugin.googlecode.com/svn/trunk/jquery.rating.css" />
<script type="text/javascript">
$(function () {
$.ajax({
type: "POST",
url: "CS.aspx/GetRating",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
if (response.d > 0) {
$('.star1').eq(response.d - 1).attr("checked", "checked");
}
$('.star1').rating({
callback: function (value, link) {
$.ajax({
type: "POST",
url: "CS.aspx/Rate",
data: "{rating: " + value + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
alert("Your rating has been saved.")
},
failure: function (response) {
alert('There was an error.');
}
});
}
});
},
failure: function (response) {
alert('There was an error.');
}
});
});
</script>
<div id="rating">
<input name="star1" type="radio" class="star1" value="1" />
<input name="star1" type="radio" class="star1" value="2" />
<input name="star1" type="radio" class="star1" value="3" />
<input name="star1" type="radio" class="star1" value="4" />
<input name="star1" type="radio" class="star1" value="5" />
</div>
Namespaces
using System.Data;
using System.Configuration;
using System.Data.SqlClient;
using System.Web.Services;
Code
[WebMethod]
public static void Rate(int rating)
{
string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand("INSERT INTO UserRatings VALUES(@Rating)"))
{
using (SqlDataAdapter sda = new SqlDataAdapter())
{
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@Rating", rating);
cmd.Connection = con;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
}
}
}
[WebMethod]
public static int GetRating()
{
string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand("SELECT ISNULL(AVG(Rating), 0) AverageRating FROM UserRatings"))
{
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
con.Open();
int rating = Convert.ToInt32(cmd.ExecuteScalar());
con.Close();
return rating;
}
}
}