2009-08-26 10 views
0

あなたの助けを前もってありがとう。マルチビュー - クリア状態を表示

私はc#.netを使用しています。

私のウェブページには2つのビュー(1つのマルチビューに含まれています)があり、両方にボタンがあります。

view_1

中継器/データソースと(各行が返さのIDを保持している)カスタムメイドの「編集」ボタンが含まれています。

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

私は信じている問題が背景にあるview_2

コード( '更新' ボタン)の中に、私の '更新' ボタンであり、私はif文を持っています

_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は表示されてはいけません。

私は下のコードでviewstates内のすべての格納された情報をクリアできると思ったが、これは動作しません。

ViewState.Clear(); 
    ClearChildViewState(); 

おかげ

クレア

答えて

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

:-)第四行は偽updateSuccessFail .Visible =でなければなりません;?

+0

ご迷惑をおかけして申し訳ありません。それはこの質問を書くときのレポでした。 Withih私のコードは失敗** ed **です。 – ClareBear

+0

Clare、問題を理解していれば、updateSuccessFailed.Visibleをfalseに設定してupdate_Click関数から外すべきだと思います。たとえば、Page_Loadの場合 – riotera

+0

Page_Load内にupdateSuccessFailed.Visible = falseを追加しましたが、ユーザーがview_2を入力する2回目は何も表示されません。ボタンが押されたために何らかの形でキャッシュされている可能性がありますか? – ClareBear

関連する問題