2010-02-08 4 views
8

Ich benutze C# für meine Programmierung.Problem - jedes versteckte Feld im Update Panel wird nicht aktualisiert

Ich habe das Problem, dass meine versteckte Variable Wert nicht aktualisiert wird, wenn es im Update-Panel ist. siehe unten Code für aspx:

<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> 
     <asp:Timer ID="Timer1" runat="server" Interval="10000" OnTick="Timer1_Tick"> 
     </asp:Timer> 
     <input type="hidden" runat="server" id="hidCurrentDate" value="" /> 
     <input type="hidden" runat="server" id="hidTripIds" value="" /> 
     <input type="hidden" runat="server" id="hidTripDetails" value="" /> 

<asp:UpdateProgress ID="uprogTrips" runat="server"> 
      <ProgressTemplate> 
       <span style="display: block; text-align: center"> 
        <p style="font-family: Verdana; font-size: larger; font-weight: bold;"> 
         <img src="../../Images/ajax-loader.gif" alt="Processing..." /><br /> 
         <br /> 
         Processing...</p> 
       </span> 
      </ProgressTemplate> 
     </asp:UpdateProgress> 
     <asp:UpdatePanel ID="upTripsGrid" runat="server" UpdateMode="Always"> 
      <ContentTemplate> 
       <asp:GridView ID="gvAllTrips" runat="server" OnRowDataBound="gvAllTrips_RowDataBound" 
        OnPageIndexChanging="gvAllTrips_PageIndexChanging" AllowPaging="true" AutoGenerateColumns="false"> 
        <PagerSettings Mode="NumericFirstLast" PageButtonCount="35" Position="TopAndBottom" /> 
        <PagerStyle CssClass="GridPager" />      
       </asp:GridView> 
      </ContentTemplate> 
      <Triggers> 
       <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" /> 
       <asp:AsyncPostBackTrigger ControlID="ddSortBy" EventName="SelectedIndexChanged" /> 
       <asp:AsyncPostBackTrigger ControlID="ddFilterBy" EventName="SelectedIndexChanged" /> 
       <asp:AsyncPostBackTrigger ControlID="cbPageOptions" EventName="CheckedChanged" /> 
      </Triggers> 
</asp:UpdatePanel> 

und unten ist der Code, wo ich versuche, eine der versteckten Feld zu aktualisieren mit meinem CS-Code.

Interessant, wenn ich versuche zu debuggen, zeigt alle Werte, aber wenn ich es auf der Seitenquelle sehe, gibt es keinen Wert.

Hier ist mein aspx.cs Code:

protected void Timer1_Tick(object sender, EventArgs e) 
{ 
    DataTable dtTrips = null; 
    WEX.Prototype.Data.TripDA tripDA = new WEX.Prototype.Data.TripDA(); 
    string tID = hidTripIds.Value; 
    string[] tripIDs = new string[1000]; 
    tripIDs = tID.Split(','); 


    foreach (string tripID in tripIDs) 
    { 
     TripSummaryBO tripSummaryBO = tripDA.getTripSummary(Convert.ToInt32(tripID)); 
     if (tripSummaryBO.tripLastEditedOnDate > Convert.ToDateTime(hidCurrentDate.Value)) 
     { 

      WEX.Prototype.Service.WSProxies WSProxies = new WEX.Prototype.Service.WSProxies(); 
      dtTrips = WSProxies.Build(); 
      Session["AllTrips"] = dtTrips; 
      dtTrips = (DataTable)Session["AllTrips"]; 
      if (dtTrips != null) 
      { 
       if (cnt==0) 
       { 
        hidTripDetails.Value = ("Trip name-" + tripSummaryBO.tripName + " was modified by user " + tripSummaryBO.tripLastEditedBy); 
       } 
       else 
       { 
        hidTripDetails.Value = hidTripDetails.Value + " <br/> " + ("Trip name-" + tripSummaryBO.tripName + " was modified by user " + tripSummaryBO.tripLastEditedBy); 
       } 
       BuildGridViewControl(dtTrips); 
       cnt = cnt + 1; 
      } 
     } 
     else 
     { 
      //upTripsGrid.Triggers.Clear(); 
      PageInit(); 
     }    
    } 
} 

Bitte vorschlagen

Dank.

Antwort

18

Ihre ausgeblendeten Eingabefelder befinden sich nicht im Steuerelement des Aktualisierungsfensters. Alle asynchronen Roundtrips zum Server führen dazu, dass nur die Steuerelemente innerhalb der UpdatePanel selbst auf der Benutzeroberfläche aktualisiert werden. Obwohl der CodeBehind die ausgeblendeten Felder ausführt und aktualisiert, bleiben sie am Frontend gleich, da sie sich außerhalb des Bereichs befinden .

Versuchen Sie, die ausgeblendeten Felder im <ContentTemplate> Tag bewegt:

<asp:UpdatePanel ID="upTripsGrid" runat="server" UpdateMode="Always"> 
    <ContentTemplate> 
     <input type="hidden" runat="server" id="hidCurrentDate" value="" /> 
     <input type="hidden" runat="server" id="hidTripIds" value="" /> 
     <input type="hidden" runat="server" id="hidTripDetails" value="" /> 
     .... 
    </ContentTemplate> 
</asp:UpdatePanel> 
+1

direkt auf das Geld – jinsungy

+0

gute Sachen. Beachten Sie, dass Sie den ContentTemplateContainer benötigen, wenn Sie das hiddenField dynamisch hinzufügen möchten: updatePanel.ContentTemplateContainer.Controls.Add (hiddenFieldX); und um es später zu finden: panel.ContentTemplateContainer.Controls.OfType () .First(); –

Verwandte Themen