HTML
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="NewGrid.aspx.cs" Inherits="GridReview.NewGrid" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>AJAX Rating control</title>
<style type="text/css">
body
{
margin:0px auto;
width:980px;
font-family:"Trebuchet MS", Arial, Helvetica, sans-serif;
background:#C9C9C9;
}
.blankstar
{
background-image: url(images/blank_star.png);
width: 16px;
height: 16px;
}
.waitingstar
{
background-image: url(images/half_star.png);
width: 16px;
height: 16px;
}
.shiningstar
{
background-image: url(images/shining_star.png);
width: 16px;
height: 16px;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<cc1:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"></cc1:ToolkitScriptManager>
<asp:GridView ID="MedicineRating" runat="server" AutoGenerateColumns="false" DataKeyNames="MID"
HeaderStyle-BackColor="black" HeaderStyle-ForeColor="White" RowStyle-BackColor="#c0c0c0"
AlternatingRowStyle-BackColor="White" AlternatingRowStyle-ForeColor="#000" Height="303px" Width="820px">
<Columns>
<asp:BoundField DataField="DrugName" HeaderText="DrugName" />
<asp:BoundField DataField="DrugFormula" HeaderText="Drug Formula" />
<asp:BoundField DataField="DrugForm" HeaderText="Drug Form" />
<asp:BoundField DataField="Price" HeaderText="Price" />
<asp:BoundField DataField="Company" HeaderText="Company" />
<asp:TemplateField HeaderText="Medicine Ratings">
<ItemTemplate>
<cc1:Rating ID="Rating1" AutoPostBack="true" OnChanged="OnRatingChanged" runat="server"
StarCssClass="blankstar" WaitingStarCssClass="waitingstar" EmptyStarCssClass="blankstar"
FilledStarCssClass="shiningstar" CurrentRating='<%# Eval("Rating") %>'>
</cc1:Rating>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</form>
</body>
</html>
Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Configuration;
using System.Data.SqlClient;
using AjaxControlToolkit;
namespace GridReview
{
public partial class NewGrid : System.Web.UI.Page
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["connectionstring"].ConnectionString);
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
MedicineRating.DataSource = GetData("SELECT MID, DrugName, DrugFormula, DrugForm, Price, Company, ISNULL((SELECT AVG(Rating) FROM tblReviews WHERE tblReviews.MID = tblMedDetail.MID), 0) Rating FROM tblMedDetail");
MedicineRating.DataBind();
}
}
private static DataTable GetData(string query)
{
DataTable dt = new DataTable();
string constr = ConfigurationManager.ConnectionStrings["connectionstring"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand(query))
{
using (SqlDataAdapter sda = new SqlDataAdapter())
{
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
sda.SelectCommand = cmd;
sda.Fill(dt);
}
}
return dt;
}
}
protected void OnRatingChanged(object sender, RatingEventArgs e)
{
int rowIndex = ((sender as Rating).NamingContainer as GridViewRow).RowIndex;
int MID = Convert.ToInt32(MedicineRating.DataKeys[rowIndex].Value);
string constr = ConfigurationManager.ConnectionStrings["connectionstring"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand("INSERT INTO tblReviews VALUES(@MID, @Rating)"))
{
using (SqlDataAdapter sda = new SqlDataAdapter())
{
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@MID", MID);
cmd.Parameters.AddWithValue("@Rating", e.Value);
cmd.Connection = con;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
}
}
Response.Redirect(Request.Url.AbsoluteUri);
}
}
}