C# - 在循环内调用相同的javascript函数

时间:2017-06-05 05:06:28

标签: javascript c# .net extjs ext.net

美好的一天!

我正在尝试为每个假期更改EXT日历的日历单元格中的颜色(假日日期来自数据库)。但它只会改变第一个假日,即数据库中的第一行。

我的客户端代码:

        var applyCss = function (param1) {
        var css = "#CalendarPanel1-month-day-" + param1 + " {background-color: pink;}";

        Ext.net.ResourceMgr.registerCssClass("someCssClassId", css);
    };

我的服务器端代码:

DataTable holiday = Attendance.getInstance().getHolidays();

            for (var i = 0; i < holiday.Rows.Count; i++)
            {
                var hd = holiday.Rows[i]["holiday_date"].ToString();
                Page.ClientScript.RegisterClientScriptBlock(GetType(), "myScript", "applyCss(" + hd + ")", true);

            }

感谢任何建议/建议/解决方案。谢谢!

3 个答案:

答案 0 :(得分:2)

原因是您每次回发只能呼叫Page.ClientScript.RegisterClientScriptBlock 一次

我的建议:创建一个字符串,其中包含您要运行的所有脚本,并在Page.ClientScript.RegisterClientScriptBlock中使用该字符串:

DataTable holiday = Attendance.getInstance().getHolidays();
string script = string.Empty;

for (var i = 0; i < holiday.Rows.Count; i++)
{
     var hd = holiday.Rows[i]["holiday_date"].ToString();
     script += " applyCss(" + hd + "); ";
}
Page.ClientScript.RegisterClientScriptBlock(GetType(), "myScript", script, true);

答案 1 :(得分:1)

我的建议是,不是循环遍历服务器端的单元格和RegisterClientScriptBlock函数,而是可以将一个&#39;字符串数组&#39; 中的所有单元格传递给客户端通过RegisterClientScriptBlock函数作为参数。

您的客户端函数的参数应该是字符串数组类型,您可以在客户端循环访问数组,这将获取结果。

答案 2 :(得分:0)

使用

X.AddScript("applyCss(" + hd + ")");

(但其他人提供的数组字符串附加方法也有效)