簡體   English   中英

如何將jQuery添加到WebPart(以響應WebPart上的某些事件)?

[英]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文件引用它,還是...?

UPDATE

對於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(),因此我認為我走過的路很通不過。

更新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);

要使此功能正常運行,要做的事情(或者也許我應該寫一個 “要做的事”)是在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.

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