2009-08-26 11 views
0

Merci d'avance pour votre aide.Multiview - Afficher l'état d'annulation

J'utilise C# .net.

J'ai deux vues sur ma page Web (contenues dans une multiview), les deux contiennent des boutons.

VIEW_1

Contient un répéteur/source de données et un fait sur le bouton « modifier » (qui contient l'identifiant pour chaque ligne renvoyée).

view_2

contiennent une forme de « mise à jour » et un bouton « mise à jour ». Lorsque l'utilisateur appuie sur le bouton de mise à jour, les informations dans la base de données pour cette ligne particulière sont mises à jour.

Le problème que je crois se trouve avec mon (bouton 'update') 'mise à jour' bouton dans view_2

code

derrière, j'ai une instruction 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 sont des div qui contiennent des informations différentes. Lorsque l'utilisateur 'met à jour' un enregistrement, il rend visible le bon div. (notYetUpdated - contient les informations de formulaire/updateSuccessFailed - contient un message indiquant si l'enregistrement a été mis à jour ou non). Toutefois, lorsque vous accédez de nouveau à view_2, il accède à l'événement update_Click et updateSuccessFailed est visible même si ce n'est pas le cas.

Je pensais que je pouvais effacer toutes les informations stockées dans les viewstates avec le code ci-dessous, mais cela ne fonctionne pas.

ViewState.Clear(); 
    ClearChildViewState(); 

Merci

Clare :-)

Répondre

0

C'était une erreur de ma part. J'ai adapté mon code, le voici:

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

Espérons que cela aide d'autres personnes.

0

La 4ème ligne doit être updateSuccessFail ed .Visible = false ;?

+0

Désolé j'ai mal lu votre message. C'était un repo en écrivant cette question. Avec mon code est un échec ** ed **. – ClareBear

+0

Clare, si j'ai compris le problème, je pense que vous devriez définir le updateSuccessFailed.Visible à faux de la fonction update_Click. Par exemple dans Page_Load – riotera

+0

j'ai ajouté updateSuccessFailed.Visible = false dans mon Page_Load, cependant la deuxième fois qu'un utilisateur entre view_2 rien n'est affiché. Peut-il être parce que le bouton a été pressé est en quelque sorte mis en cache? – ClareBear