[英]C# - Call the same javascript function inside a loop
美好的一天!
我正在嘗試為每個假期更改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);
}
贊賞任何建議/建議/解決方案。 謝謝!
原因是每個回發只能調用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函數,您可以將所有單元格放在一個“字符串數組”中,然后通過RegisterClientScriptBlock函數將其作為參數傳遞給客戶端函數。
您的客戶端函數的參數應為字符串數組類型,並且您可以在客戶端中循環遍歷該數組,以獲取結果。
采用
X.AddScript("applyCss(" + hd + ")");
(但是其他人提供的數組字符串附加方法也可以)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.