如何在buttonclick上存储文本框输入,以便页面重新加载可以使用这些值来重新创建一些内容? 我已经尝试过使用viewState但是在使用断点时它总是在page_load上说null。
按钮点击:
protected void LoadLifeLineBtn_Click(object sender, EventArgs e)
{
ViewState["lifelineID"] = Convert.ToInt32(TextBox1.Text);
ViewState["phaseid"] = Convert.ToInt32(TextBox2.Text);
this.Page_Load();
}
继承我的page_load
int lifelineid;
int phaseid;
protected void Page_Load(object sender, EventArgs e)
{
hideAndShow();
if (!IsPostBack)
{
lifelineid = 22222;
phaseid = 1;
FillFaseTable(PhaseMainTable, phaseid, lifelineid);
PhasePanel.CssClass = "panel col-lg-2 col-md-2 col-xs-2 Phase1BackgroundColor";
}
else if (IsPostBack)
{
if (ViewState["lifelineid"] != null)
{
lifelineid = (int)ViewState["lifelineid"];
}
if (ViewState["phaseid"] != null)
{
phaseid = (int)ViewState["phaseid"];
}
FillFaseTable(PhaseMainTable, phaseid, lifelineid);
PhasePanel.CssClass = "panel col-lg-2 col-md-2 col-xs-2 Phase1BackgroundColor";
}
}
答案 0 :(得分:0)
假设您的按钮已连接到此事件
<asp:Button ID="LoadLifeLineBtn" runat="server" OnClick="LoadLifeLineBtn_Click"></asp:Button>
你应该能够稍微改变一下,以便在代码中获得更顺畅的流程。
protected void LoadLifeLineBtn_Click(object sender, EventArgs e)
{
hideAndShow();
int lifelineID = Convert.ToInt32(TextBox1.Text);
int phaseid = Convert.ToInt32(TextBox2.Text);
FillFaseTable(PhaseMainTable, phaseid, lifelineid);
PhasePanel.CssClass = "panel col-lg-2 col-md-2 col-xs-2 Phase1BackgroundColor";
}
现在重新组织您的Page_Load
事件以处理页面最初加载的时间
protected void Page_Load(object sender, EventArgs e)
{
hideAndShow();
if (!IsPostBack)
{
lifelineid = 22222;
phaseid = 1;
FillFaseTable(PhaseMainTable, phaseid, lifelineid);
PhasePanel.CssClass = "panel col-lg-2 col-md-2 col-xs-2 Phase1BackgroundColor";
}
}
原因是当LoadLifeLineBtn_Click
触发时,您可以在此时执行所需操作,而不是直接调用Page_Load
事件。
答案 1 :(得分:0)
我正在添加第二个答案,以帮助您解释当您点击LoadLifeLineBtn
按钮时代码中发生的一些事情。
当您点击LoadLifeLineBtn
时,它会触发LoadLifeLineBtn_Click
事件,该事件将创建 PostBack ,输入TextBox1
和TextBox2
的值将会已成为ViewState
。
在您的代码中,您可以将其更改为此代码,并且可以按照您的意图继续操作,而无需手动设置ViewState
。
protected void Page_Load(object sender, EventArgs e)
{
int lifelineid;
int phaseid;
hideAndShow();
if (!IsPostBack)
{
lifelineid = 22222;
phaseid = 1;
}
else
{
lifelineID = Convert.ToInt32(TextBox1.Text);
phaseid = Convert.ToInt32(TextBox2.Text);
}
FillFaseTable(PhaseMainTable, phaseid, lifelineid);
PhasePanel.CssClass = "panel col-lg-2 col-md-2 col-xs-2 Phase1BackgroundColor";
}