aspx
<asp:TemplateField HeaderText="Click to Rate">
<ItemTemplate>
<ajax:Rating ID="ajaxrating" AutoPostBack="true" OnChanged="RatingControlChanged" runat="server" StarCssClass="ratingEmpty" WaitingStarCssClass="ratingSaved" EmptyStarCssClass="ratingEmpty" FilledStarCssClass="ratingFilled">
</ajax:Rating>
<asp:label ID="lblrating" runat="server"/>
</ItemTemplate>
</asp:TemplateField>
<script>
function GridViewRowChecked(what) {
var Ctl = new RegExp("ctl\\d+")
var LineNumber = Ctl.exec(what.name).toString();
var txtProduct = document.getElementById("grd1_" + LineNumber + "_lblProgName");
if (what.checked) {
txtProduct.setAttribute("readonly", "none");
txtProduct.readOnly = false;
}
else {
txtProduct.setAttribute("readonly", "readonly");
txtProduct.readOnly = true;
}
}
</script>
cs
protected void RatingControlChanged(object sender, AjaxControlToolkit.RatingEventArgs e)
{
AjaxControlToolkit.Rating myRating = (AjaxControlToolkit.Rating)sender;
System.Text.RegularExpressions.Regex rexLineNo = new System.Text.RegularExpressions.Regex("ctl\\d+");
string progid = this.ProgrameID(rexLineNo.Match(myRating.UniqueID).ToString());
con.Open();
SqlCommand cmd = new SqlCommand("insert into RatingDetails(ProgrammeID, Rating, machine_ip)values(@id,@Rating,@ip)", con);
cmd.Parameters.AddWithValue("@id", progid);
string temp = myRating.CurrentRating.ToString();
cmd.Parameters.AddWithValue("@Rating", Convert.ToInt32(temp));
cmd.Parameters.AddWithValue("@ip", ip.Text);
cmd.ExecuteNonQuery();
con.Close();
BindRatingControl();
UpdateRating();
con.Close();
cls.MsgBox("Thank you for rate this programme", this.Page);
}
public string ProgrameID(string LineNo)
{
foreach (GridViewRow r in this.grd1.Rows)
{
Label lblProgID = (Label)r.FindControl("lblProgID");
if (lblProgID.UniqueID.Contains(LineNo))
{
return lblProgID.Text;
}
}
return string.Empty;
}
protected void BindRatingControl()
{
int total = 0;
DataTable dt1 = new DataTable();
con.Open();
SqlCommand cmd1 = new SqlCommand("Select * from ProgrammeSchedule", con);
SqlDataAdapter da1 = new SqlDataAdapter(cmd1);
da1.Fill(dt1);
for (int p = 1; p <= dt1.Rows.Count; p++)
{
DataTable dt = new DataTable();
SqlCommand cmd = new SqlCommand("Select Rating from RatingDetails where ProgrammeID=" + p, con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
total += Convert.ToInt32(dt.Rows[i][0].ToString());
}
int average = total / (dt.Rows.Count);
}
}
con.Close();
}