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 :-)
Entschuldigen Sie Ihre Nachricht falsch gelesen. Das war ein Repo beim Schreiben dieser Frage. Mit meinem Code ist ein Fail ** ed **. – ClareBear
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
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