Заранее благодарим вас за помощь.Multiview - View Clear State
Я использую C# .net.
У меня есть два вида на моей веб-странице (содержится в одном мультивизе), оба содержат кнопки.
view_1
Содержит ретранслятор/источник данных и выполненное на заказ кнопку «изменить» (который содержит идентификатор для каждой строки возвращается).
view_2
Содержат «Обновить» форму и кнопку «Обновить». Когда пользователь нажимает кнопку обновления, информация в базе данных для этой конкретной строки обновляется.
Проблема я считаю, лежит на моей кнопке 'Обновить' в view_2
код позади (кнопка 'Обновить'), у меня есть, если заявление:
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 - это div, которые содержат различную информацию.
Когда пользователь сначала «обновляет» запись, он делает вид справа видимым. (notYetUpdated - содержит информацию о форме/updateSuccessFailed - содержит сообщение, чтобы указать, была ли обновлена запись или нет). Однако, когда вы снова получаете доступ к view_2, он обращается к событию update_Click, и updateSuccessFailed отображается, хотя этого не должно быть.
Я думал, что смогу очистить всю сохраненную информацию в видах данных с помощью кода ниже, однако это не работает.
ViewState.Clear();
ClearChildViewState();
Благодаря
Clare :-)
Оставьте неверное сообщение. Это было репо при написании этого вопроса. Withih мой код является ошибкой ** ed **. – ClareBear
Клэр, если я понял проблему, я думаю, вы должны установить updateSuccessFailed.Visible в false из функции update_Click. Например, в Page_Load – riotera
я добавил updateSuccessFailed.Visible = false в моей Page_Load, однако во второй раз, когда пользователь вводит view_2, ничего не отображается. Может быть, потому, что нажата кнопка, как-то кэшируется? – ClareBear