Multiview - Просмотр состояния очистки - PullRequest
0 голосов
/ 26 августа 2009

Заранее спасибо за помощь.

Я использую c # .net.

У меня есть два представления на моей веб-странице (в одном мультивью), оба содержат кнопки.

view_1

Содержит ретранслятор / источник данных и пользовательскую кнопку «Редактировать» (которая содержит идентификатор для каждой возвращаемой строки).

view_2

Содержит форму «обновления» и кнопку «обновления». Когда пользователь нажимает кнопку обновления, информация в базе данных для этой конкретной строки обновляется.

Я полагаю, что проблема связана с моей кнопкой «обновить» в view_2

Код позади (кнопка "обновить"), у меня есть утверждение if:

        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, которые содержат различную информацию.

Когда пользователь впервые «обновляет» запись, он делает правильный div видимым. (notYetUpdated - содержит информацию о форме / updateSuccessFailed - содержит сообщение о том, была ли запись обновлена ​​или нет). Однако, когда вы снова получаете доступ к view_2, он обращается к событию update_Click, и updateSuccessFailed становится видимым, хотя это не должно быть.

Я думал, что смогу очистить всю сохраненную информацию внутри состояний с помощью приведенного ниже кода, однако это не работает.

    ViewState.Clear();
    ClearChildViewState();

Спасибо

Клэр: -)

Ответы [ 2 ]

0 голосов
/ 01 сентября 2009

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

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 голосов
/ 26 августа 2009

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

...