2012-10-11 36 views
2

我創建了一個Web部件,並有五種配置:在usercontrol.ascx,我用下面的代碼獲取值:的NullReferenceException在網絡的一部分

namespace tasks_email.tasks_email_webpart 
{ 
    public partial class tasks_email_webpartUserControl : UserControl 
    { 

     public tasks_email_webpart WebPart { get; set; } 

     protected void Page_Load(object sender, EventArgs e) 
     { 
     } 
protected void btn_send_id_Click(object sender, EventArgs e) 
     { 

      string subject = " "; 
      subject = this.WebPart.SUBJECT as string; 
      string emailAddrS = " "; 
      emailAddrS = this.WebPart.EMAILADDR as string; 
      string checkout_changes = " "; 
      checkout_changes = this.WebPart.CHECKOUTLISTSNAMES as string; 
      SendCheckout("[email protected]", subject, "this is a project test"); 

但是當我點擊該按鈕,它說:空引用異常,變量無法獲得SUBJECT值無論我編輯配置

任何機構可以告訴我如何處理?

*我檢查了webpart.cs,我也寫這樣的:

namespace tasks_email.tasks_email_webpart 
{ 
    [ToolboxItemAttribute(false)] 
    public class tasks_email_webpart : Microsoft.SharePoint.WebPartPages.WebPart 
    { 

     [WebBrowsable(true), Category("Configurations"), Personalizable(PersonalizationScope.Shared), WebDisplayName("Subject")] 
     public string SUBJECT { get; set; } 

在ASCX我創建了該方法的按鈕:

<asp:Button ID="btn_send_id" runat="server" Text=" Email_changes " 
onclick="btn_send_id_Click" CssClass="Search_Submit" onclientclick="return checkna()" 
    /> 

錯誤報告:

[NullReferenceException: Object reference not set to an instance of an object.] 
    tasks_email.tasks_email_webpart.tasks_email_webpartUserControl.btn_send_id_Click(Object sender, EventArgs e) +375 
    System.Web.UI.WebControls.Button.OnClick(EventArgs e) +114 
    System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +139 
    System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +28 
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2980 
+0

從你的類繼承什麼對象類型? –

+0

public partial class tasks_email_webpartUserControl:UserControl – user1686630

+0

是你需要的嗎? – user1686630

回答

1

當您開發SP2010可視化Web部件時,您應該始終從Microsoft.SharePoint.WebPartPages.WebPart繼承,所以你的部分看起來是這樣的:

[ToolboxItemAttribute(false)] 
public class MyWebPart : Microsoft.SharePoint.WebPartPages.WebPart 
{ 

    [Personalizable(), WebBrowsable, Category("GPWF Settings")] 
    public string WebClientUrl { get; set; } 

} 

因爲你從UserControl繼承,你總是得到屬性的空引用。

所以,如果你不先設置你的道具,你應該修改你這樣的代碼:

string subject = this.WebPart.SUBJECT as string; 
    string emailAddrS = this.WebPart.EMAILADDR as string; 
    string checkout_changes = this.WebPart.CHECKOUTLISTSNAMES as string; 
+0

所以......我該如何解決這個問題 – user1686630

+0

仍然是新手.... – user1686630

+1

基於o戴維斯評論說,我相信他找到了你的問題的原因。你可能沒有設置你的道具,而只是先閱讀它們......我將更新你的代碼,這會讓你解決這個問題。 –

0

一個更好的方法是添加主題,EMAILADDR和CHECKOUTLISTSNAMES在這樣的用戶控件的公共屬性:

public string Subject {get;set;} 

而在網絡部分,你實例用戶控件,你寫的:

protected override void CreateChildControls() 
{ 
    var control = (tasks_email_webpartUserControl) Page.LoadControl(_ascxPath); 
    control.Subject = this.SUBJECT; 
} 

通過這樣做,您仍然將主題設置爲Web部件屬性,但將用戶控件的數據傳遞給,而不是嘗試從獲取用戶控件的數據

相關問題