簡體   English   中英

C#-在循環內調用相同的javascript函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM