2011-12-26 42 views
0

我在頁面上有兩個圖像按鈕。當單擊它時,它需要在頁面回發之前設置會話變量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圖像按鈕,它通常觸發click事件,如果自動回沒有被禁用調用該方法。如果您確實想在自動回覆命中之前更改會話值,請在onclientclick事件上調用客戶端JavaScript函數,然後對此進行ajax調用,以更新會話變量值的服務器頁面。一旦從ajax調用(成功事件)獲得響應,返回true,以便網頁繼續進行表單回發事件。

+0

它似乎刷新頁面之前,它運行的按鈕,這不是我想要發生的代碼。有沒有辦法在頁面重新加載之前在點擊事件中運行代碼? – CsharpBeginner 2011-12-26 01:40:17

+0

所以你的客戶端JavaScript有一些問題。你可以發佈你的JavaScript代碼嗎? – Shyju 2011-12-26 02:30:16

+0

沒有運行JavaScript。只是這個asp按鈕 CsharpBeginner 2011-12-26 02:32:16

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

這個點擊事件會在頁面回傳之前觸發嗎?似乎一旦圖像被點擊,頁面重新加載,然後在點擊事件中運行代碼。 – CsharpBeginner 2011-12-26 01:41:46

+0

不,回發事件處理在加載事件之前不能觸發。點擊事件完成後,你需要做一些刷新或重新綁定嗎?如果是這樣,您可以將響應重定向到同一頁面。 – 2011-12-26 01:43:16