如何将jQuery添加到WebPart(以响应WebPart上的某些事件)
本文关键字:WebPart 事件 响应 jQuery 添加 | 更新日期: 2023-09-27 17:52:36
我开始在我的Sharepoint页面上添加一个UpdatePanel,这样我就可以响应发生的事件(比如复选框的检查和单选按钮的混合等)。然而,从这个问题可以推断出,到目前为止,这一切都是由挫折和其他一切造成的。
所以我现在可能要遍历(没有双关语)jQuery路线,我试图找出/找出如何将jQuery添加到WebPart。
目前,我在c#中根据用户在WebPart的编辑器中选择的内容动态创建控件(如果他们选择显示Section 1,我将为Section 1创建所有控件,等等)。
作为一个例子,我目前在c#中有条件地创建一个RadioButton,如下所示:
var radbtnEmployeeQ = new RadioButton
{
CssClass = "dplatypus-webform-field-input"
};
现在如果我想给它添加jQuery,我可以给它添加一个ID,像这样:
var radbtnEmployeeQ = new RadioButton
{
CssClass = "dplatypus-webform-field-input",
ID = "radbtnEmp"
};
…然后添加这种性质的jQuery(伪代码):
$('radbtnEmp').click {
// visiblize/invisiblize other controls, assign certain vals to their properties
}
这对我来说似乎是可行的,但是我如何将jQuery添加到WebPart中呢?是否在与*. asx .cs文件相同的目录级别添加.js文件,然后从*. asx .cs文件引用它,还是…?
更新对于POC测试,我在我的项目中添加了一个名为"directpaydynamic.js"的文件,内容如下:
<script>
$(document).ready(function () {
$('input:radio[name=radbtnEmp]:checked').change(function () {
if ($("input[name='radbtnEmp']:checked").val() == 'Employee?') {
alert("radbtnEmp checked");
}
else {
alert("radbtnEmp not checked");
}
});
});
</script>
(源自此处的示例)
…并在我的*. asx .cs文件中引用.js文件,如下所示:
SPWeb site = SPContext.Current.Web;
site.CustomJavaScriptFileUrl = @"C:'Projects'DirectPaymentWebForm'DirectPaymentSectionsWebPart'DPSVisualWebPart'directpaydynamic.js";
(我将.js文件拖到代码中以获得路径)
然而,运行解决方案并捣毁单选按钮不会导致alert()显示,所以我认为我已经选择了一条很少有人走过的路。
更新2
意识到我不需要脚本业务(因为这是一个。js文件,而不是html文件),我删除了这些,并在jQuery中添加了一个"at any rate"alert():
$(document).ready(function () {
alert("What's new, pussycat, whoa-oh-oh-oh-OH-oh?");
$('input:radio[name=radbtnEmp]:checked').change(function () {
if ($("input[name='radbtnEmp']:checked").val() == 'Employee?') {
alert("radbtnEmp checked");
}
else {
alert("radbtnEmp not checked");
}
});
});
…
在页面加载方法中使用下面的代码
string url = SPContext.Current.Site.ServerRelativeUrl;
if (!url.EndsWith("/"))
{
url += "/";
}
HtmlGenericControl styleCss = new HtmlGenericControl("link");
styleCss.Attributes.Add("rel", "stylesheet");
styleCss.Attributes.Add("type", "text/css");
styleCss.Attributes.Add("href", url + "Style Library/css/style.css");
HtmlGenericControl JsLink = new HtmlGenericControl("script");
JsLink.Attributes.Add("src", url + "Style Library/js/jquery.min.js");`enter code here`
this.Controls.Add(styleCss);
this.Controls.Add(JsLink);
要做到这一点(或者我应该写,"a"的事情要做)是添加代码,像下面的WebPart的*的结尾。ascx文件:
<script>
$(document).ready(function () {
alert("The ready function has been reached");
});
$(document).on("change", '[id$=ckbxEmp]', function () {
alert('Function has been reached');
if ($(this).is(":checked")) {
alert("Checked");
} else {
alert("Not checked");
}
});
</script>