如何将jQuery添加到WebPart(以响应WebPart上的某些事件)?

时间:2015-06-01 21:13:44

标签: c# jquery sharepoint-2010 web-parts

我开始向我的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文件拖到代码上以获取路径)

然而,运行解决方案并将无线电按钮混合会导致无法显示警告(),所以我认为我已经走了一条很好的理由而不是走过的路。

更新2

意识到我不需要脚本业务(因为这是一个.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");
        }
    });
});

......但我仍然忍受着惊人的警报......

2 个答案:

答案 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>

上述作品就像一个冠军。