我的组件(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都是null(就像它们没有加载一样),它们没有我的弹出工作,但是我需要弹出它。
有什么想法吗?
PS:我的viewState已启动。
我调试了整个代码,它停在了
this.txtSeller.Text = name;
LoadSeller的第一行。这说“this.txtSeller”为空,我不知道为什么。我检查了我的.designer.cs并声明了this.txtSeller。 (如果我没有尝试从其他页面加载,它也可以工作)
Obs:我想知道我的代码是否可能以某种方式破坏了我的另一页上的负载(或类似的东西)。
感谢您的帮助^。^
修改
我的结构是:
页
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
在我的Control2中,我的第一个代码是“我的组件(ascx):”
字幕:Control == userControl
面包屑导航:
答案 0 :(得分:1)
这一行Components.BasicData basicData= new Components.BasicData();
不是创建自定义控件和他的所有内部控件,nether是指向现有控件的指针。
如果你已经准备好在这个页面上包含你的控件,那么你可以通过它的控件id直接调用这个函数。此控件已准备好与您的页面一起存在,只需调用它即可。
protected void btnSave_Click(object sender, EventArgs e)
{
Button save = (Button)sender;
YourCustomControlID.LoadSeller("TEST", save.CommandArgument);
}
现在,如果您希望将数据发送到下一页,您首先要创建一个类,以保存您的信息,并使其在不同页面之间移动并填充数据。
在每个页面中,您都有一个对此类的引用,一个变量,以太创建一个新的ether从上一页获取它。您将它存储在ViewState
现在来自 Page1 - >第2页。强>
您可以将Page1设置为
从Page1发送PostBackUrl="Page2.aspx"
在page2.aspx上,您可以设置获取信息的位置
<%@ PreviousPageType VirtualPath="~/Page1.aspx" %>
你得到他们......
if (Page.PreviousPage != null)
{
if(Page.PreviousPage.IsCrossPagePostBack == true)
{
GetTheClass = PreviousPage.MyDataClass;
}
}
另一种手动方式是使您的课程可连续,通过邮寄将其作为xml发送,并在下一页解码。