美好的一天!
我正在尝试为每个假期更改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);
}
感谢任何建议/建议/解决方案。谢谢!
答案 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 + ")");
(但其他人提供的数组字符串附加方法也有效)