美好的一天!
我需要帮助通过on-load后面的代码来激活我的javascript函数。
这是我的代码:
string script = @"var applyCss = function () {
var css = '#CalendarPanel1-month-day-20170607, #CalendarPanel1-month-day-20170614 {background-color: #D0D3D4;}';
Ext.net.ResourceMgr.registerCssClass('someCssClassId', css);
}; ";
ScriptManager.RegisterClientScriptBlock(this, typeof(Page), "css", script, true);
顺便说一句,上面的代码通过按钮点击在前端工作。
但我想要的结果是,我希望我的javascript函数能够在页面加载时工作而无需单击按钮。我把我的javascript函数放在代码隐藏中,因为我会将动态日期放在css变量中。上面的代码仍然有静态变量。 (CalendarPanel1 - 月 - 日 - 20170607)
很乐意接受任何回应/解决方案。非常感谢!
答案 0 :(得分:2)
您可以使用立即调用的函数来执行此操作。基本上你没有为你的javascript函数命名,你在定义后立即调用它。
例如:
var script = @"(function () {alert('Hello');})(); ";
ScriptManager.RegisterStartupScript(this, typeof(Page), "123", script, true);
您需要将函数的主体包含在括号之间,然后使用另一组括号来调用函数。
您也可以将参数传递给您的函数(我假设它是您想要的):
var myAlertText = "Hello Hello";
var script = @"(function (myText) {alert(myText);})('" + myAlertText + "');" ;
如果我是你,虽然我会在客户端代码中定义该函数,并使用正确的参数从代码后面调用它。
答案 1 :(得分:0)
从后面的代码调用javascript代码的另一种更有趣的方法是使用X.Call()
。看看这个例子:
<%@ Page Language="C#" %>
<!DOCTYPE html>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
if (!X.IsAjaxRequest)
{
string script = @"var myJSSideVar = 'my var value';
var applyCss = function (paramOne, paramTwo) {
var css = '#CalendarPanel1-month-day-20170607, #CalendarPanel1-month-day-20170614 {background-color: #D0D3D4;}';
Ext.net.ResourceMgr.registerCssClass('someCssClassId', css);
Ext.Msg.alert('applyCss called.', 'I\'ve been run with parameters: (' + paramOne + ', ' + paramTwo + ').');
};";
var hi = "hello";
X.AddScript(script);
X.Call("applyCss", new object[] { hi, new JRawValue("myJSSideVar") });
}
}
</script>
<html>
<head runat="server">
<title></title>
</head>
<body>
<form runat="server" id="form1">
<div>
<ext:ResourceManager runat="server" />
</div>
</form>
</body>
</html>
注意发送给脚本调用的第二个参数是&#34; raw&#34;,即它调用:applyCss("hello", myJSSideVar)
如果您只需通过一个参数,则无需传递数组,例如: X.Call("applyCss", hi);