2016-02-04 2 views
0

У меня есть форма и GridView на той же странице. Когда пользователь сохраняет форму, он создает идентификатор. Мне нужно установить id в HiddenField. Затем мне нужен HiddenField для GridView. Но как только код завершает метод сохранения формы, скрытые получает сбрасываются в 0.Hiddenfield теряет значение

<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> 

Я поставил кнопку Сохранить в панели обновления, чтобы остановить страницу с освежающего и закрытия (обычно после того, как сохранить кнопка нажата, она закроет форму, но мне нужно, чтобы она оставалась открытой).

В верхней части страницы я поставил скрытый:

<asp:HiddenField ID="hfNewID" runat="server" /> 

Затем в методе btnSaveMaintenance_Click я установил значение скрытого

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, чтобы сохранить значение?

+0

Теряя в то время как постбэка ?? – Arshad

+2

Возможно, вам нужно поместить свое скрытое поле внутри вашей обновленной панели, под contentTemplate, а не поверх страницы. – Sandcar

+0

Пожалуйста, поместите скрытое поле в панель обновления. Я надеюсь, что это поможет вам –

ответ

2

Пожалуйста, попробуйте следующее: Поместите ваши скрытые поля внутри 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> 
Смежные вопросы