我开始向我的Sharepoint页面添加UpdatePanel,以便我可以响应发生的事件(例如复选框的检查和单选按钮的混搭等)。然而,到目前为止,这种情况已经带来了挫败感和所有腐烂,这可以从this question中推断出来。
所以我现在可能会遍历(没有双关语)jQuery路由,并试图找出/找出如何将jQuery添加到WebPart。
Currenlty,我根据用户在WebPart编辑器中选择的内容动态创建C#控件(如果他们选择显示第1部分,我为第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?是在与.ascx.cs文件相同的目录级别添加.js文件,然后从* .ascx.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>
(源自示例here)
...并在我的* .ascx.cs文件中引用.js文件,如下所示:
SPWeb site = SPContext.Current.Web;
site.CustomJavaScriptFileUrl = @"C:\Projects\DirectPaymentWebForm\DirectPaymentSectionsWebPart\DPSVisualWebPart\directpaydynamic.js";
(我将.js文件拖到代码上以获取路径)
然而,运行解决方案并将无线电按钮混合会导致无法显示警告(),所以我认为我已经走了一条很好的理由而不是走过的路。
意识到我不需要脚本业务(因为这是一个.js文件,而不是一个html文件),我删除了那些,并在jQuery中放了一个“无论如何”的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");
}
});
});
......但我仍然忍受着惊人的警报......
答案 0 :(得分:1)
在页面加载方法
上使用以下代码 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);
答案 1 :(得分:0)
要做到这一点,要做的事情(或者我应该写,&#34; &#34;要做的事情)就是在下面添加如下代码: 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>
上述作品就像一个冠军。