在编写用于 Sharepoint 2007 / WSS 3.0 的自定义 Web 部件时,我遇到了一个奇怪的问题 -当我的 Web 部件上的按钮被单击时,事件处理程序没有触发。
按照 MSDN 建议、Sharepoint Services 3.0 内部以及 stackoverflow 的答案,我已经覆盖了System.Web.UI.WebControls.WebParts.WebPart的CreateChildControls()方法。
该方法如下所示:
protected override void CreateChildControls()
{
// Get the ID from the master (pseudocode here to keep it short)
if(ICrediteurIdProviderReference == null)
{
// We must have the detail-id or we can't load the form
return;
}
// Call base
base.CreateChildControls();
// ** Creation of the rest of the form removed for clarity **
// Create button
Button saveButton = new Button();
saveButton.ID = "SaveButton";
saveButton.Text = "Save";
// saveButton.CommandName = "Save";
// saveButton.CommandArgument = "";
// Register event handler
saveButton.Click += new EventHandler(saveButton_Click);
// Add button to page
this.Controls.Add(saveButton);
}
为了清楚起见,我删除了表单其余部分的启动,以及放置表单的 HTML 表的创建。
我的事件处理程序如下所示:
void saveButton_Click(object sender, EventArgs e)
{
System.Diagnostics.Debug.WriteLine("saveButton_Click fired..");
}
是的,这是我默认的“简单调试”事件处理程序。
到目前为止,我已经尝试遵循这些建议,但没有运气:
- 在按钮上设置CommandName和CommandArgument(参见注释掉的代码)
- 在OnInit()方法中而不是在CreateChildControls()中创建按钮
开始扯掉我的头发,但我认为这是我错过的非常简单的事情。任何帮助将不胜感激 :) :)