SharePoint 2013 Web 部件按钮单击事件未触发

Posted

技术标签:

【中文标题】SharePoint 2013 Web 部件按钮单击事件未触发【英文标题】:SharePoint 2013 web part button click event not firing 【发布时间】:2015-05-20 12:08:55 【问题描述】:

我正在使用 Cloud 9 视频作为教程构建我的第一个 Hello World Web 部件。

我正在使用带有 SharePoint 2013、SQL Server 2012 和 VS Premium 2013 Update 4 的 Azure VM。

Web 部件是一个带有按钮和标签的简单文本框。点击事件触发一个方法,将标签的文本设置为“你好”+文本框中的文本。

    protected void btnSubmitThis_Click(object sender, EventArgs e)
    
        lblOutput.Text = "Hello, " + txtTextBox.Text;
    

我已经能够推送我的 Web 部件并将其插入到我的 SharePoint 2013 主页中。

点击甚至什么都不做。实际上,在调试中运行时,我可以看到构造函数 OnInit() 和 Page_Load() 都执行了,但 btnSubmitThis_Click() 没有执行。

Web 部件确实附加了一个 ascx.g.cs 文件。

我可以看到该文件还包含以下代码,表明事件确实正确处理了该方法:

        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Never)]
    [GeneratedCodeAttribute("Microsoft.VisualStudio.SharePoint.ProjectExtensions.CodeGenerators.SharePointWebP" +
        "artCodeGenerator", "12.0.0.0")]
    private global::System.Web.UI.WebControls.Button @__BuildControlbtnSubmitThis() 
        global::System.Web.UI.WebControls.Button @__ctrl;
        @__ctrl = new global::System.Web.UI.WebControls.Button();
        this.btnSubmitThis = @__ctrl;
        @__ctrl.ApplyStyleSheetSkin(this.Page);
        @__ctrl.ID = "btnSubmitThis";
        @__ctrl.Text = "Submit";
        @__ctrl.Click -= new System.EventHandler(this.btnSubmitThis_Click);
        @__ctrl.Click += new System.EventHandler(this.btnSubmitThis_Click);
        return @__ctrl;
    

我可以看到没有产生任何错误,点击事件根本没有调用该方法。

我会在这里遗漏什么?

我已经准备好回答任何问题,因为我真的很想解决这个问题,而且我已经花了几天时间自己尝试。

非常感谢您的帮助。

请求添加的代码:

ascx:

<%@ Assembly Name="$SharePoint.Project.AssemblyFullName$" %>
<%@ Assembly Name="Microsoft.Web.CommandUI, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> 
<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> 
<%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="asp" Namespace="System.Web.UI" Assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>
<%@ Import Namespace="Microsoft.SharePoint" %> 
<%@ Register Tagprefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="HelloWorldWebPart.ascx.cs" Inherits="HelloWorld.HelloWorldWebPart.HelloWorldWebPart" %>
<p>
    Name:
    <asp:TextBox ID="txtTextBox" runat="server"></asp:TextBox>
&nbsp;<asp:Button ID="btnSubmitThis" runat="server" OnClick="btnSubmitThis_Click" Text="Submit" />
</p>
<asp:Label ID="lblOutput" runat="server"></asp:Label>

ascx.cs:

using System;
using System.ComponentModel;
using System.Web.UI.WebControls.WebParts;

namespace HelloWorld.HelloWorldWebPart

[ToolboxItemAttribute(false)]
public partial class HelloWorldWebPart : WebPart

    // Uncomment the following SecurityPermission attribute only when doing Performance Profiling on a farm solution
    // using the Instrumentation method, and then remove the SecurityPermission attribute when the code is ready
    // for production. Because the SecurityPermission attribute bypasses the security check for callers of
    // your constructor, it's not recommended for production purposes.
    // [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Assert, UnmanagedCode = true)]
    public HelloWorldWebPart()
    
    

    protected override void OnInit(EventArgs e)
    
        base.OnInit(e);
        InitializeControl();
    

    protected void Page_Load(object sender, EventArgs e)
    
        int Test = 0;
    

    protected void btnSubmitThis_Click(object sender, EventArgs e)
    
        lblOutput.Text = "Hello, " + txtTextBox.Text;
    


【问题讨论】:

可视 WebPart 或 WebPart ?如果visual WP发布ascx,否则发布webpart的构造函数。我怀疑你没有在标记上绑定点击事件。 嗨,马克斯。可视 WebPart。我正在将代码添加到 ascx 我认为标记中缺少一些对象?按钮和标签? 确实被截断了。 您是否在测试页上添加了 Web 部件?从管理面板显示 Web 部件时不要尝试单击按钮。 【参考方案1】:

它不想作为沙盒解决方案工作。虽然在农场解决方案中调试更难,但它似乎更健壮。

【讨论】:

以上是关于SharePoint 2013 Web 部件按钮单击事件未触发的主要内容,如果未能解决你的问题,请参考以下文章

带有常用按钮菜单栏的 Sharepoint 2013 列表视图

从 Sharepoint Web 部件运行 exe

创建加载用户控件的 SharePoint 2013 Web 部件

将 SharePoint 2013 WSP(Web 部件)迁移到 SharePoint 2019(本地)[关闭]

Sharepoint 2013 中的 Ajax 连接 Web 部件

如何在 SharePoint2013 的 SharePoint Web Access Web 部件中访问 Excel PROTECTED 电子表格?