2011-12-26 10 views
0

ページに2つの画像ボタンがあります。いずれかをクリックすると、ページがポストバックされる前にセッション変数yesIDおよびNoIdを設定する必要があります。私は各ボタンのクリックイベントにコードを入れようとしましたが、クリックイベントでそのコードを実行する前にページが再びロードされます。いずれかの画像をクリックしたときに2つのセッション変数を設定するにはどうすればよいですか?画像ボタンをクリックしたときのセッション変数の設定は?

<div id="MainPics"> 
     <div id="RightPic"> 
      <p> 
       <asp:Label ID="FirstPicMemberNameLabel" runat="server" Text="" Font-Bold="True" ForeColor="White"></asp:Label> 
      </p> 
      <asp:ImageButton ID="FirstPicLink" Width="90%" runat="server" 
       onclick="FirstPicLink_Click" /> 
     </div> 
     <div id="LeftPic"> 
      <p> 
       <asp:Label ID="SecondPicMemberNameLabel" runat="server" Text="" ForeColor="White" Font-Bold="True"></asp:Label> 
      </p> 
      <asp:ImageButton ID="SecondPicLink" Width="90%" runat="server" 
       onclick="SecondPicLink_Click" /> 
     </div> 
     <div id="skip"> 
      <asp:LinkButton ID="LBNoChoice" PostBackUrl="~/default.aspx" ForeColor="White" runat="server">Skip - I Can't Choose</asp:LinkButton> 
     </div> 
    </div> 

コードビハインドページ

protected void Page_Load(object sender, EventArgs e) 
    { 

     if (!IsPostBack) 
     { 

      Session["yesID"] = 0; 
      Session["noId"] = 0; 
     } 
     else 
     { 
      //Send Session Variables to Database for Storage. 

     }  
} 

    protected void FirstPicLink_Click(object sender, ImageClickEventArgs e) 
    { 
     Session["yesID"] = 1; 
     Session["noId"] = 2; 
    } 

    protected void SecondPicLink_Click(object sender, ImageClickEventArgs e) 
    { 
     Session["yesID"] =2; 
     Session["noId"] = 1; 
    } 

答えて

0

あなたがasp.netの画像ボタンをクリックすると、これは通常、クリックイベントを発生し、AutoPostBackのは禁止されていなければメソッドを呼び出します。 autopostbackがヒットする前にセッション値を実際に変更したい場合は、onclientclickイベントのクライアントサイドのjavascript関数を呼び出して、セッション変数値を更新するサーバーページへのajax呼び出しを行います。 ajax呼び出し(成功イベント)からの応答を取得したら、trueを返して、Webページがフォームのポストバックイベントを継続するようにします。

+0

私は何が起こりたいのではないボタンのコードを実行する前にページをリフレッシュするようです。ページがリロードされる前にclickイベントでコードを実行する方法はありますか? – CsharpBeginner

+0

クライアントサイドのJavaScriptにはいくつかの問題があります。あなたのJavaScriptコードを投稿できますか? – Shyju

+0

JavaScriptはまったく実行されていません。 – CsharpBeginner

1

このロジックは役に立ちますか?

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     Session["yesID"] = 0; 
     Session["noId"] = 0; 
    } 
    //else 
    //{ 
     //Send Session Variables to Database for Storage. 
    //} 
} 

protected void FirstPicLink_Click(object sender, ImageClickEventArgs e) 
{ 
    Session["yesID"] = 1; 
    Session["noId"] = 2; 

    SendSessionVariables(Session["yesID"], Session["noId"]); 
} 

private void SendSessionVariables(object p, object p_2) 
{ 
    // Your database code here 
} 

protected void SecondPicLink_Click(object sender, ImageClickEventArgs e) 
{ 
    Session["yesID"] = 2; 
    Session["noId"] = 1; 

    SendSessionVariables(Session["yesID"], Session["noId"]); 
} 
+0

このクリックイベントは、ページがポストバックされる前に起動しますか?いいえ、これは単にaspボタンの CsharpBeginner

+0

いいえ、ポストバックイベントの処理は、ロードイベントの前には決して実行できません。 Clickイベントが完了した後、リフレッシュまたは再バインドを行う必要がありますか?そうであれば、同じページに応答をリダイレクトできます。 –

関連する問題