[英]System.NullReferenceException - Calling secondary page
我的組件(ascx):
這個組件是我頁面的一部分,和他一起,我打開了一個新頁面(下一個代碼)。
public void LoadSeller(string name, string id)
{
this.txtSeller.Text = name;
this.hdnSellerID.Value = id;
}
我的彈出窗口(aspx):
使用此代碼,我進行了一些搜索並選擇了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和hidden都為空(就像未加載一樣),它們在沒有我的彈出窗口的情況下仍能正常工作,但我需要我的彈出窗口。
有任何想法嗎 ?
PS:我的viewState是UP。
我調試了我的整個代碼,它停止在
this.txtSeller.Text =名稱;
LoadSeller的第一行。 這表示“ this.txtSeller”為空,我不知道為什么。 我檢查了我的.designer.cs並聲明了this.txtSeller。 (如果我不嘗試從其他頁面加載,它也可以工作)
Obs:我想知道我的代碼是否可能以某種方式破壞了我另一頁上的負載(或類似的東西)。
感謝您的幫助^。^
編輯:
我的結構是這樣的:
頁
Control1
Control2
**Open pop up**
Control3
彈出
Search
Gridview with buttons
網格視圖中的按鈕
Goes to my second code "my pop up (aspx):"
Close pop up
在Control2中,我有第一個代碼“我的組件(ascx):”
字幕:Control == userControl
面包屑導航:
此行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上
現在從第1頁->第2頁。
您通過設置將其從Page1發送到
PostBackUrl="Page2.aspx"
在page2.aspx上,您可以設置獲取信息的位置
<%@ PreviousPageType VirtualPath="~/Page1.aspx" %>
你得到他們...
if (Page.PreviousPage != null)
{
if(Page.PreviousPage.IsCrossPagePostBack == true)
{
GetTheClass = PreviousPage.MyDataClass;
}
}
另一種手動方式是使您的類可訪問,通過post作為xml發送,然后在下一頁上對其進行解碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.