2009-08-26 7 views
0

Vielen Dank im Voraus für Ihre Hilfe.Multiview - View Clear State

Ich verwende C# .net.

Ich habe zwei Ansichten auf meiner Webseite (in einem Multiview enthalten), beide enthalten Schaltflächen.

VIEW_1

Enthält eine Repeater/Datenquelle und ein Maß ‚Bearbeiten‘ -Taste (die die ID hält für jede Zeile zurückgegeben).

view_2

enthalten ein ‚update‘ Formular aus und ein ‚Update‘ klicken. Wenn der Benutzer die Aktualisierungsschaltfläche drückt, werden die Informationen in der Datenbank für diese bestimmte Zeile aktualisiert.

Das Problem, das ich liegt glaube mit meinem 'update' Taste innerhalb view_2

-Code hinter ('update' Taste), ich habe eine if-Anweisung:

 protected void Page_Load(object sender, EventArgs e) 
    { 
     updateSuccessFailed.Visible = false; 

     if (!Page.IsPostBack) 
     { 
      _multiView1.ActiveViewIndex = 0; 
     } 
    } 

protected void update_Click(object sender, EventArgs e) 

{

var Id = Convert.ToInt32((ID.Value)); 

    notYetUpdated.Visible = true; 
    updateSuccessFailed.Visible = false; 

    tblV updateV = new tblV(); 

     updateV.vID = venueId; 
     updateV.vame = updateName.ToString(); 
     updateV.vPostcode = updatePropPostcode.ToString(); 

     if (vRepos.Update(updateV)) 
     { 
      notYetUpdated.Visible = false; 
      updateSuccessFailed.Visible = true; 
      updateMessage.Text = "Updated."; 
     } 
     else 
     { 
      notYetUpdated.Visible = false; 
      updateSuccessFailed.Visible = true; 
      updateMessage.Text = "An error has occurred, please try again."; 
     } 
} 

_view2

<asp:View ID="_view2" runat="server">  
    <div style="text-align:center" runat="server" id="notYetUpdated"> 
     <table border="0" cellspacing="1"> 
     <tr> 
      <td style="text-align:left;">Name</td> 
      <td style="text-align:left;"><asp:TextBox ID="updateName" MaxLength="60" runat="server" /></td> 
     </tr> 
     <tr> 
      <td style="text-align:left;">Postcode</td> 
      <td style="text-align:left;"><asp:TextBox ID="updatePropPostcode" MaxLength="60" runat="server" /></td>   
     </tr>   
     </table><br />    

     <asp:Button ID="updateVCancel" Text="Cancel" runat="server" onclick="cancel_Click" CssClass="standardButton" /> 
     <asp:Button ID="updateVConfirm" Text="Update" runat="server" onclick="update_Click" CssClass="standardButton" /> 
     <asp:HiddenField ID="vUpdateID" runat="server" />  
    </div> 

    <div style="text-align:center" runat="server" id="updateSuccessFailed"> 
     <p><asp:Label ID="updateMessage" runat="server" /></p> 
     <asp:Button ID="updateBack" Text="Back To Start" runat="server" onclick="backToStart_Click" CssClass="standardButton" /> 
    </div> 

    </asp:View> 

notYetUpdated/updateSuccessFailed sind Divs, die unterschiedliche Informationen enthalten.

Wenn der Benutzer zuerst einen Datensatz "aktualisiert", macht er das richtige div sichtbar. (notYetUpdated - enthält die Formularinformationen/updateSuccessFailed - enthält eine Nachricht, die angibt, ob der Datensatz aktualisiert wurde oder nicht). Wenn Sie jedoch erneut auf view_2 zugreifen, greift es auf das Ereignis update_Click zu, und updateSuccessFailed ist sichtbar, obwohl dies nicht der Fall sein sollte.

Ich dachte, ich könnte alle gespeicherten Informationen innerhalb der Viewstates mit dem Code unten löschen, aber dies funktioniert nicht.

ViewState.Clear(); 
    ClearChildViewState(); 

Dank

Clare :-)

Antwort

0

Dies war ein Fehler meinerseits. Ich habe meinen Code angepasst, hier ist es:

var Id = Convert.ToInt32((ID.Value)); 

tblV updateV = new tblV();   
updateV.vID = venueId;   
updateV.vame = updateName.ToString();   
updateV.vPostcode = updatePropPostcode.ToString(); 

notYetUpdated.Visible = false;  
updateSuccessFailed.Visible = true; 

if (vRepos.Update(updateV))   
{     
updateMessage.Text = "Updated.";   
}   
else   
{  
updateMessage.Text = "An error has occurred, please try again.";   
} 

Hoffe das hilft anderen Menschen.

0

Die vierte Zeile sollte updateSuccessFail ed .Visible = false ;? sein

+0

Entschuldigen Sie Ihre Nachricht falsch gelesen. Das war ein Repo beim Schreiben dieser Frage. Mit meinem Code ist ein Fail ** ed **. – ClareBear

+0

Clare, wenn ich das Problem verstanden habe, denke ich, sollten Sie updateSuccessFailed.Visible auf false setzen aus der Funktion update_Click. Zum Beispiel habe ich in Page_Load – riotera

+0

updateSuccessFailed.Visible = false in meinem Page_Load hinzugefügt, aber das zweite Mal, wenn ein Benutzer view_2 eingibt, wird nichts angezeigt. Kann es sein, dass der Knopf gedrückt wurde, wird er irgendwie zwischengespeichert? – ClareBear