2011-04-06 31 views
0

我的組件(ASCX):System.NullReferenceException - 調用二級頁面

這部分是我的網頁的一部分,和他在一起,我打開一個新頁面(下一個代碼)。

public void LoadSeller(string name, string id) 
    { 
     this.txtSeller.Text = name; 
     this.hdnSellerID.Value = id; 
    } 

我彈出(CSS):

有了這個代碼,我做了一些搜索和選擇的GridView的一個項目,這個送回到我的ascx。

protected void btnSave_Click(object sender, EventArgs e) 
    { 
     Components.BasicData basicData= new Components.BasicData(); 

     Button save = (Button)sender; 
     basicData.LoadSeller("TEST", save.CommandArgument); 
    } 

回發作品,我收到正確的數據(我檢查了我的調試)。但txt和隱藏都是空的(就像他們沒有加載),他們沒有我的彈出工作,但我需要我的彈出。

任何想法?

PS:我的視圖狀態爲UP。

調試我的整個代碼,它停在

this.txtSeller.Text =名稱;

LoadSeller的第一道防線。這表示「this.txtSeller」爲空,我不知道爲什麼。我檢查了我的.designer.cs並聲明瞭this.txtSeller。 (它也工作,如果我不是從其他頁面試圖加載)

觀測值:我想知道,也許我的代碼以某種方式破壞我的其他網頁上的負載(或像這樣)。

感謝您的幫助^^

編輯:

我的結構是這樣的:

PAGE

Control1 

Control2 

    **Open pop up** 

Control3 

POP UP

Search 

Gridview with buttons 

在gridview的按鈕

Goes to my second code "my pop up (aspx):" 

Close pop up 

在我的控制2我有我的第一代碼 「我的組分(ASCX):」

字幕:控制==用戶控件

痕跡導航:

  • 解決方案
    • 組件(文件夾)
      • BasicData。ASCX
    • PopUp.aspx
+0

什麼是'Components.BasicData'?如果是UserControl,你應該用'Page.LoadControl(「BasicData.ascx」)加載它,如果你想動態添加它或者直接引用它,如果它已經在頁面上。 – 2011-04-06 20:47:46

+0

感謝蒂姆,爲您的答案^。^我嘗試使用'Components.BasicData',在這行之前'Components.BasicData basicData = new Components.BasicData();'這並沒有工作。 – 2011-04-07 12:37:53

回答

1

此行Components.BasicData basicData= new Components.BasicData();不是創建自定義的控制,他的所有的內部控制,幽冥是一個指向現有的。

如果你已經準備好將你的控件包含在這個頁面上,那麼你可以通過它的控件ID來直接調用這個函數。這個控件已經和你的頁面一起存在,只需調用它即可。

protected void btnSave_Click(object sender, EventArgs e) 
    { 
     Button save = (Button)sender; 
     YourCustomControlID.LoadSeller("TEST", save.CommandArgument); 
    } 

現在,如果你想將數據發送到您首先創建一個讓您的信息和其打算從頁面移動到頁面,並用數據填充類下一個頁面。

在每個頁面中你都有一個對這個類的引用,一個變量,那個ether創建一個新的ether從前一頁中獲取它。你把它存儲在ViewState上

現在從Page1 - > Page2。

您從第1頁的集page2.aspx設置,你可以得到的信息

<%@ PreviousPageType VirtualPath="~/Page1.aspx" %> 

,你通過讓他們將其發送至

PostBackUrl="Page2.aspx" 

在...

另外一種手動方式是讓你的類變爲可串行的,通過郵件發送爲xml,並在下一頁進行解碼。

+0

我試着在我的示例中使用第一種方法(但首先將其設置爲對象,然後使用該對象)。這發送我的數據,正如我所說的,但給我'NULL'錯誤。我會嘗試你建議的課程。無論如何+1爲你解釋,好帖子。 (我不接受作爲答案,但是,因爲,我不知道它是否適用於我。) – 2011-04-07 12:49:59

+0

@Nymos是的我認爲第二種方法是你需要的。你可以從PreviousPage和函數調用,也許你可以調用你的函數 - 你只需要做一些測試就可以看到。 – Aristos 2011-04-07 13:46:47