Compilation error - user control

Z

Zeba

Hi,

I have a user control in which in have the following code :


<%@ Control Language="C#" AutoEventWireup="true"
CodeFile="RatingControl.ascx.cs" Inherits="UserControls_RatingControl"
%>
<script type="text/javascript">

function alterRating(rating)
{
var i;
var img = document.getElementById("<%=star"+i+".ClientID %>");
for(i=1;i<=rating;i++)
{
var img = document.getElementById("<%=star"+i+".ClientID %>");
img.src = "~/Images/StarOver.gif";
}
for(i=rating;i<=5;i++)
{
var img = document.getElementById("<%=star"+i+".ClientID %>");
img.src = "~/Images/StarOff.gif";
}
}


I'm getting a compilation error that says :

) expected

Line 11: var img = document.getElementById("<%=star"+i+".ClientID
%>");

What is the problem ??

Thanks !!
 
J

Jon Skeet [C# MVP]

What is the problem ??

It's not clear to me what you're trying to do. What do you want the
processed script to come out as? Bear in mind that "i" here is a
variable in the JavaScript, not in the .NET code.

(You might get more replies in the ASP.NET group, by the way.)

Jon
 
S

sameer.amin.alibhai

If I can guess what you are trying to do...
first of all, your i that you have within the <%= %> brackets is going
to refer to your codebehind variables (Not the javascript variable).
It almost seems like you are trying to use reflection or something and
get the ClientID of that item

First of all your javascript is referring to the variable i right
after you declare it but it has no value yet!

Maybe you could use an alternative approach of writing this in your
code behind

WriteScript() //Rough C# Code
{
int i;
HtmlControl img; // = Page.FindControl("star"+i); // i not
declared yet
for(i=1;i<=rating;i++)
{
img = Page.FindControl("star"+i);
img.src = "~/Images/StarOver.gif";
}
for(i=rating;i<=5;i++)
{
// same thing here
// var img = document.getElementById("<%=star"+i+".ClientID
%>");
// img.src = "~/Images/StarOff.gif";
}

}

// same thing here
// var img = document.getElementById("<%=star"+i+".ClientID %>");

tada..

Or if you want to do it from javascript not codebehind, just modify
the above to do the following

REsponse.write("<script type='text/javascript'>");
then in the loop you can stick another Response.Write(...)
then end with Response.Write("</script>")

or alternatively, read about RegisterClientScript Here:
http://www.codeproject.com/aspnet/ClientServer.asp

Sameer Alibhai
Sharp Developer
http://www.SharpDeveloper.Net
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top