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

C# - Call the same javascript function inside a loop

美好的一天!

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

我的客户端代码:

        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);

            }

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

原因是每次回传只能调用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);

我的建议是不要在服务器端循环遍历单元格和 RegisterClientScriptBlock 函数,您可以将所有单元格集中在一个 'string array' 中并将其传递给客户端通过 RegisterClientScriptBlock 函数将 side 函数作为参数。

你的客户端函数的参数应该是字符串数组类型,你可以在客户端循环遍历这个数组来获取结果。

使用

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

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