希德菲尔德失去价值
Hiddenfield loses value
我在同一页面上有一个表单和一个 GridView。当用户保存表单时,它会创建一个 ID。我需要将 id 设置为 HiddenField。然后我需要 GridView 的 HiddenField。但是一旦代码完成表单的保存方法,HiddenField 就会重置为 0。
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnSaveMaintenance" />
</Triggers>
</asp:UpdatePanel>
<tr>
<td>
<asp:LinkButton ID="btnSaveMaintenance" OnClientClick="return ValidateSaveWithoutPieces()" OnClick="btnSaveMaintenance_Click" runat="server" style="float:left" CssClass="btnSaveSmall" ></asp:LinkButton>
</td>
我将保存按钮放在更新面板中以阻止页面刷新和关闭(通常单击保存按钮后它会关闭表单,但我需要它保持打开状态)。
在页面顶部我放置了 HiddenField:
<asp:HiddenField ID="hfNewID" runat="server" />
然后在 btnSaveMaintenance_Click
方法中我设置了 HiddenField 的值
protected void btnSaveMaintenance_Click(object sender, EventArgs e)
{
int tmpParentID = tmpID;
if (ParentID.HasValue)
tmpParentID = ParentID.Value;
Maintenance newMain = new Maintenance
{
ID = tmpID,
Company_ID = Company.Current.CompanyID,
VehicleTrailer = tmpType,
LinkedID = (long)tmpParentID,
DBRowStatus = JobPiece.RowStatus.ToCreate
};
main.Add(newMain);;
hfNewID.Value = tmpID.ToString(); //set value to hiddenfield
if (ParentID.HasValue)
{
Save(Reg, ParentID.Value);
List<Maintenance> Newmain = Maintenance.GetMainteneceItemsByParentID(Company.Current.CompanyID,
ParentID.Value,
PageType,
"Active");
ViewState["Maintenance"] = Newmain;
gvMaintenance.DataSource = Newmain;
gvMaintenance.DataBind();
udpMain.Update();
}
}
但是当我尝试在另一个函数中调用 HiddenField 时,一直返回空白。如何让 HiddenField 保持值?
请试试这个:
将隐藏字段放在 updatePanel 中的 contentTemplate 下,而不是页面顶部
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
// you have to put your hidden in this place
<asp:HiddenField ID="hfNewID" runat="server" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnSaveMaintenance" />
</Triggers>
</asp:UpdatePanel>
我在同一页面上有一个表单和一个 GridView。当用户保存表单时,它会创建一个 ID。我需要将 id 设置为 HiddenField。然后我需要 GridView 的 HiddenField。但是一旦代码完成表单的保存方法,HiddenField 就会重置为 0。
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnSaveMaintenance" />
</Triggers>
</asp:UpdatePanel>
<tr>
<td>
<asp:LinkButton ID="btnSaveMaintenance" OnClientClick="return ValidateSaveWithoutPieces()" OnClick="btnSaveMaintenance_Click" runat="server" style="float:left" CssClass="btnSaveSmall" ></asp:LinkButton>
</td>
我将保存按钮放在更新面板中以阻止页面刷新和关闭(通常单击保存按钮后它会关闭表单,但我需要它保持打开状态)。
在页面顶部我放置了 HiddenField:
<asp:HiddenField ID="hfNewID" runat="server" />
然后在 btnSaveMaintenance_Click
方法中我设置了 HiddenField 的值
protected void btnSaveMaintenance_Click(object sender, EventArgs e)
{
int tmpParentID = tmpID;
if (ParentID.HasValue)
tmpParentID = ParentID.Value;
Maintenance newMain = new Maintenance
{
ID = tmpID,
Company_ID = Company.Current.CompanyID,
VehicleTrailer = tmpType,
LinkedID = (long)tmpParentID,
DBRowStatus = JobPiece.RowStatus.ToCreate
};
main.Add(newMain);;
hfNewID.Value = tmpID.ToString(); //set value to hiddenfield
if (ParentID.HasValue)
{
Save(Reg, ParentID.Value);
List<Maintenance> Newmain = Maintenance.GetMainteneceItemsByParentID(Company.Current.CompanyID,
ParentID.Value,
PageType,
"Active");
ViewState["Maintenance"] = Newmain;
gvMaintenance.DataSource = Newmain;
gvMaintenance.DataBind();
udpMain.Update();
}
}
但是当我尝试在另一个函数中调用 HiddenField 时,一直返回空白。如何让 HiddenField 保持值?
请试试这个: 将隐藏字段放在 updatePanel 中的 contentTemplate 下,而不是页面顶部
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
// you have to put your hidden in this place
<asp:HiddenField ID="hfNewID" runat="server" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnSaveMaintenance" />
</Triggers>
</asp:UpdatePanel>