评级控制给出 Javascript:void(0)

发布于 2024-11-02 06:53:46 字数 6130 浏览 1 评论 0原文

由于缺少内联 CSS 样式表,我的基本测试评级控件无法正常工作,遇到一些小困难后,当我单击不同更新面板中的按钮时,我尝试在更新面板中动态添加一堆评级控件。 (这些面板都在父更新面板中,我已经定义了触发器并将更新模式设置为条件)。无论如何,当我单击按钮时,他会使用评级控件更新更新面板,但是当我将鼠标悬停在它们上方时,他始终显示 0(当前评级),并且不会更改评级控件星形图像(filledStarRating)。与我的问题相关的代码(两种方法):

protected void imbformulier_Click(Object sender, ImageClickEventArgs e)
{
    imbFormulier.Visible = false;
    imbGebruikers.Visible = false;
    imbModellen.Visible = false;
    pnlGegevens1.Visible = false;
    pnlGegevens2.Visible = true;
    pnlNavigatie.Visible = true;
    pnlEval.Visible = true;    

    //kijken welk formulier moet ingevuld worden adhv de ddl's en dit meegeven aan de zelfgemaakte klasse
    List<EvaluatieFormulier> mijnformulieren = (List<EvaluatieFormulier>)Session["mijnformulieren"];
    IEnumerator<EvaluatieFormulier> enumerator = mijnformulieren.GetEnumerator();
    EvaluatieFormulier meetegeven = new EvaluatieFormulier();
    while (enumerator.MoveNext())
    {
        if (((enumerator.Current.GebruikergeevalueerdID == ddlGebruikers.SelectedValue) && (enumerator.Current.ModelID == Convert.ToInt32(ddlModellen.SelectedValue))))
        {
            meetegeven = enumerator.Current;
            //Eventueel tekst veranderen als er al was gewerkt aan een bepaalde evaluatie
            if (meetegeven.Tijdaangewerkt == 0)
            {
                lblInfo.Text = "Evaluatie gestart van " + ddlGebruikers.SelectedItem.Text;
                lblDatum.Text = "Evaluatie begonnen op: "+  DateTime.Now.Date.ToString("d/M/yyyy") + "(Vandaag)" ;
                //updaten in database
                Session["aantalminutenaangewerkt"] = 0;
                Session["aantalsecondenaangewerkt"] = 0;
                timTijdAanGewerkt.Enabled = true;
                lblTijd.Visible = true;
            }
            else
            {
                lblInfo.Text = "Evaluatie verdergezet van " + ddlGebruikers.SelectedItem.Text;
                lblDatum.Text = "Evaluatie laatst gewijzigd : " + meetegeven.Tijdingevuld.ToString();
                Session["aantalminutenaangewerkt"] = meetegeven.Tijdaangewerkt;
                Session["aantalsecondenaangewerkt"] = 0;
                timTijdAanGewerkt.Enabled = true;
                lblTijd.Visible = true;
            }
        }
    }

    //Rating controls aanmaken voor elke criteria
    List<AjaxControlToolkit.Rating> lijstratingcontrols = new List<AjaxControlToolkit.Rating>();

    Model modelmetdomeinen = new Model() ;
    IEnumerator<Model> modelenum = Database.laadModellenIn().GetEnumerator();
    while (modelenum.MoveNext())
    {
        if (modelenum.Current.ModelID == meetegeven.ModelID)
            modelmetdomeinen = modelenum.Current;
    }    

    //foreach (Domein domein in modelmetdomeinen.Domeins)
    //{
    //    foreach (Criterium criterium in domein.Criteriums)
    //    {
    //        AjaxControlToolkit.Rating ratingcontrol = new AjaxControlToolkit.Rating();
    //        ratingcontrol.ID = criterium.CriteriumNaam;
    //        ratingcontrol.StarCssClass = "ratingStar";
    //        ratingcontrol.EmptyStarCssClass = "emptyStarRating";
    //        ratingcontrol.WaitingStarCssClass = "emptyStarRating";
    //        ratingcontrol.FilledStarCssClass = "filledStarRating";
    //        ratingcontrol.Changed += new AjaxControlToolkit.RatingEventHandler(rating_Changed);
    //        ToolkitScriptManager1.RegisterAsyncPostBackControl(ratingcontrol);
    //        lijstratingcontrols.Add(ratingcontrol);
    //    }
    //}

    //Evaluatieform formulier = new Evaluatieform(meetegeven,lijstratingcontrols);
    Table evaluatietabel = new Table();
    int domeinteller =0;

    foreach (Domein domein in modelmetdomeinen.Domeins)
    {
        domeinteller++;
        if (domeinteller < 4)
        {
            TableRow domeinrij = new TableRow();
            TableCell domeintitel = new TableCell();
            domeintitel.Text = domeinteller + ". " + domein.DomeinNaam;
            domeintitel.BorderStyle = BorderStyle.None;
            domeinrij.Cells.Add(domeintitel);
            evaluatietabel.Rows.Add(domeinrij);
            foreach (Criterium criterium in domein.Criteriums)
            {
                int criteriumteller = 1;
                TableRow criteriumrij = new TableRow();
                TableCell criteriumtitel = new TableCell();
                TableCell opvulcell = new TableCell();
                TableCell ratingcell = new TableCell();

                criteriumtitel.BorderStyle = BorderStyle.None;
                opvulcell.BorderStyle = BorderStyle.None;
                ratingcell.BorderStyle = BorderStyle.None;

                criteriumtitel.Text = criteriumteller + ". " + criterium.CriteriumNaam;
                AjaxControlToolkit.Rating ratingcontrol = new AjaxControlToolkit.Rating();
                ratingcontrol.ID = criterium.CriteriumNaam;
                ratingcontrol.StarCssClass = "ratingStar";
                ratingcontrol.EmptyStarCssClass = "emptyStarRating";
                ratingcontrol.WaitingStarCssClass = "emptyStarRating";
                ratingcontrol.FilledStarCssClass = "filledStarRating";
                ratingcontrol.Changed += new AjaxControlToolkit.RatingEventHandler(rating_Changed);
                ratingcell.Controls.Add(ratingcontrol);
                ratingcell.Attributes.Add("runat", "server");
                ratingcell.Attributes.Add("onclick", "return false");

                criteriumrij.Cells.Add(opvulcell);
                criteriumrij.Cells.Add(criteriumtitel);
                criteriumrij.Cells.Add(ratingcell);

                evaluatietabel.Rows.Add(criteriumrij);
                criteriumteller++;
            }
        }
    }

    evaluatietabel.BorderStyle = BorderStyle.None;
    pnlEval.ContentTemplateContainer.Controls.Add(evaluatietabel);

    Session["formulieractief"] = true;
    pnlEval.Update();
    pnlGegevens1.Update();
    pnlGegevens2.Update();
}

我还添加 图像的链接 显示了我的问题,以便您可以自己查看:

After some minor difficulties with my basic test rating control not working because of the missing inline CSS stylesheet, I am trying to dynamically add a bunch of rating controls in a updatepanel when I click on a button in a different updatepanel. (These panels are both in a parent updatepanel, I have defined the triggers and set the updatemode to conditional). Anyways, when I click the button, he updates the updatepanel with the rating controls, but when I hover over them, he always displays 0 (the current rating), and does not change the rating control star image (filledStarRating). The code relevant to my problem (two methods):

protected void imbformulier_Click(Object sender, ImageClickEventArgs e)
{
    imbFormulier.Visible = false;
    imbGebruikers.Visible = false;
    imbModellen.Visible = false;
    pnlGegevens1.Visible = false;
    pnlGegevens2.Visible = true;
    pnlNavigatie.Visible = true;
    pnlEval.Visible = true;    

    //kijken welk formulier moet ingevuld worden adhv de ddl's en dit meegeven aan de zelfgemaakte klasse
    List<EvaluatieFormulier> mijnformulieren = (List<EvaluatieFormulier>)Session["mijnformulieren"];
    IEnumerator<EvaluatieFormulier> enumerator = mijnformulieren.GetEnumerator();
    EvaluatieFormulier meetegeven = new EvaluatieFormulier();
    while (enumerator.MoveNext())
    {
        if (((enumerator.Current.GebruikergeevalueerdID == ddlGebruikers.SelectedValue) && (enumerator.Current.ModelID == Convert.ToInt32(ddlModellen.SelectedValue))))
        {
            meetegeven = enumerator.Current;
            //Eventueel tekst veranderen als er al was gewerkt aan een bepaalde evaluatie
            if (meetegeven.Tijdaangewerkt == 0)
            {
                lblInfo.Text = "Evaluatie gestart van " + ddlGebruikers.SelectedItem.Text;
                lblDatum.Text = "Evaluatie begonnen op: "+  DateTime.Now.Date.ToString("d/M/yyyy") + "(Vandaag)" ;
                //updaten in database
                Session["aantalminutenaangewerkt"] = 0;
                Session["aantalsecondenaangewerkt"] = 0;
                timTijdAanGewerkt.Enabled = true;
                lblTijd.Visible = true;
            }
            else
            {
                lblInfo.Text = "Evaluatie verdergezet van " + ddlGebruikers.SelectedItem.Text;
                lblDatum.Text = "Evaluatie laatst gewijzigd : " + meetegeven.Tijdingevuld.ToString();
                Session["aantalminutenaangewerkt"] = meetegeven.Tijdaangewerkt;
                Session["aantalsecondenaangewerkt"] = 0;
                timTijdAanGewerkt.Enabled = true;
                lblTijd.Visible = true;
            }
        }
    }

    //Rating controls aanmaken voor elke criteria
    List<AjaxControlToolkit.Rating> lijstratingcontrols = new List<AjaxControlToolkit.Rating>();

    Model modelmetdomeinen = new Model() ;
    IEnumerator<Model> modelenum = Database.laadModellenIn().GetEnumerator();
    while (modelenum.MoveNext())
    {
        if (modelenum.Current.ModelID == meetegeven.ModelID)
            modelmetdomeinen = modelenum.Current;
    }    

    //foreach (Domein domein in modelmetdomeinen.Domeins)
    //{
    //    foreach (Criterium criterium in domein.Criteriums)
    //    {
    //        AjaxControlToolkit.Rating ratingcontrol = new AjaxControlToolkit.Rating();
    //        ratingcontrol.ID = criterium.CriteriumNaam;
    //        ratingcontrol.StarCssClass = "ratingStar";
    //        ratingcontrol.EmptyStarCssClass = "emptyStarRating";
    //        ratingcontrol.WaitingStarCssClass = "emptyStarRating";
    //        ratingcontrol.FilledStarCssClass = "filledStarRating";
    //        ratingcontrol.Changed += new AjaxControlToolkit.RatingEventHandler(rating_Changed);
    //        ToolkitScriptManager1.RegisterAsyncPostBackControl(ratingcontrol);
    //        lijstratingcontrols.Add(ratingcontrol);
    //    }
    //}

    //Evaluatieform formulier = new Evaluatieform(meetegeven,lijstratingcontrols);
    Table evaluatietabel = new Table();
    int domeinteller =0;

    foreach (Domein domein in modelmetdomeinen.Domeins)
    {
        domeinteller++;
        if (domeinteller < 4)
        {
            TableRow domeinrij = new TableRow();
            TableCell domeintitel = new TableCell();
            domeintitel.Text = domeinteller + ". " + domein.DomeinNaam;
            domeintitel.BorderStyle = BorderStyle.None;
            domeinrij.Cells.Add(domeintitel);
            evaluatietabel.Rows.Add(domeinrij);
            foreach (Criterium criterium in domein.Criteriums)
            {
                int criteriumteller = 1;
                TableRow criteriumrij = new TableRow();
                TableCell criteriumtitel = new TableCell();
                TableCell opvulcell = new TableCell();
                TableCell ratingcell = new TableCell();

                criteriumtitel.BorderStyle = BorderStyle.None;
                opvulcell.BorderStyle = BorderStyle.None;
                ratingcell.BorderStyle = BorderStyle.None;

                criteriumtitel.Text = criteriumteller + ". " + criterium.CriteriumNaam;
                AjaxControlToolkit.Rating ratingcontrol = new AjaxControlToolkit.Rating();
                ratingcontrol.ID = criterium.CriteriumNaam;
                ratingcontrol.StarCssClass = "ratingStar";
                ratingcontrol.EmptyStarCssClass = "emptyStarRating";
                ratingcontrol.WaitingStarCssClass = "emptyStarRating";
                ratingcontrol.FilledStarCssClass = "filledStarRating";
                ratingcontrol.Changed += new AjaxControlToolkit.RatingEventHandler(rating_Changed);
                ratingcell.Controls.Add(ratingcontrol);
                ratingcell.Attributes.Add("runat", "server");
                ratingcell.Attributes.Add("onclick", "return false");

                criteriumrij.Cells.Add(opvulcell);
                criteriumrij.Cells.Add(criteriumtitel);
                criteriumrij.Cells.Add(ratingcell);

                evaluatietabel.Rows.Add(criteriumrij);
                criteriumteller++;
            }
        }
    }

    evaluatietabel.BorderStyle = BorderStyle.None;
    pnlEval.ContentTemplateContainer.Controls.Add(evaluatietabel);

    Session["formulieractief"] = true;
    pnlEval.Update();
    pnlGegevens1.Update();
    pnlGegevens2.Update();
}

I'm also adding the link to an image that shows my problem, so that you can see it for yourself:

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

蓝天白云 2024-11-09 06:53:46

我们最近遇到了同样的问题,问题是最新版本的 AjaxControltoolkit 似乎需要 ToolkitScriptManager 而不是普通的 ScriptManager。

所以只要尝试改变你的
asp:ScriptManager 标记
asp:ToolKitScriptManager 或
ajax:ToolKitScriptManager
或者无论你的命名空间是什么。

We had the same issue recently and the problem was that the latest version of the AjaxControltoolkit seems to require a ToolkitScriptManager instead of the normal ScriptManager.

So just try changing your
asp:ScriptManager tag to
asp:ToolKitScriptManager or
ajax:ToolKitScriptManager
or whatever your namespace is.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文