[英]How can I add jQuery to a WebPart (to respond to certain events on the WebPart)?
我從將UpdatePanel添加到我的Sharepoint頁面的路徑開始,以便我可以響應發生的事件(例如,復選框的選中和單選按鈕的融合等)。 然而,到目前為止,這是令人沮喪的,並且已經腐爛了,這可以從這個問題中得出。
因此,我現在可能要遍歷(無雙關語)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>
(來自此處的示例)
...並在我的* .ascx.cs文件中引用.js文件,如下所示:
SPWeb site = SPContext.Current.Web;
site.CustomJavaScriptFileUrl = @"C:\Projects\DirectPaymentWebForm\DirectPaymentSectionsWebPart\DPSVisualWebPart\directpaydynamic.js";
(我將.js文件拖到代碼中以獲取路徑)
但是,運行解決方案並搗碎單選按鈕不會顯示alert(),因此我認為我走過的路很通不過。
意識到我不需要腳本業務(因為這是一個.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);
要使此功能正常運行,要做的事情(或者也許我應該寫一個 “要做的事”)是在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>
上面的作品像冠軍。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.