2009-08-26 3 views
0

Заранее благодарим вас за помощь.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 :-)

ответ

0

Это была ошибка с моей стороны. Я адаптировал свой код, вот он:

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.";   
} 

Надеюсь, это поможет другим людям.

0

4-я строка должна быть updateSuccessFail ред .Visible = ложным ;?

+0

Оставьте неверное сообщение. Это было репо при написании этого вопроса. Withih мой код является ошибкой ** ed **. – ClareBear

+0

Клэр, если я понял проблему, я думаю, вы должны установить updateSuccessFailed.Visible в false из функции update_Click. Например, в Page_Load – riotera

+0

я добавил updateSuccessFailed.Visible = false в моей Page_Load, однако во второй раз, когда пользователь вводит view_2, ничего не отображается. Может быть, потому, что нажата кнопка, как-то кэшируется? – ClareBear