2017-09-17 50 views
1

只有在計算按鈕之前點擊確認按鈕,我怎樣才能讓lblmessage顯示?

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Confirm.aspx.cs" Inherits="XEx04Quotation.Confirm" %> 
 

 
<!DOCTYPE html> 
 

 
<html xmlns="http://www.w3.org/1999/xhtml"> 
 
<head runat="server"> 
 
    <title>Confirm quotation</title> 
 
    <meta name="viewport" content="width=device-width, initial-scale=1" /> 
 
    <script src="Scripts/jquery-1.9.1.min.js"></script> 
 
    <script src="Scripts/bootstrap.min.js"></script> 
 
    <link href="Content/bootstrap.min.css" rel="stylesheet" /> 
 
    <link href="Content/site.css" rel="stylesheet" /> 
 
</head> 
 
<body> 
 
    <form id="form1" runat="server" class="form-horizontal"> 
 

 
     <main class="container"> 
 

 
      <h1 class="jumbotron">Quotation confirmation</h1> 
 

 
      <div class="form-group"> 
 
       <label class="col-sm-3 control-label">Sales price</label> 
 
       <asp:Label ID="lblSalesPrice" runat="server" CssClass="col-sm-3 bold"></asp:Label> 
 
      </div> 
 

 
      <div class="form-group"> 
 
       <label class="col-sm-3 control-label">Discount amount</label> 
 
       <asp:Label ID="lblDiscountAmount" runat="server" CssClass="col-sm-3 bold"></asp:Label> 
 
      </div> 
 

 
      <div class="form-group"> 
 
       <label class="col-sm-3 control-label">Total price</label> 
 
       <asp:Label ID="lblTotalPrice" runat="server" CssClass="col-sm-3 bold"></asp:Label> 
 
      </div> 
 

 
      <div class="row"> 
 
       <h3 class="col-sm-offset-2 col-sm-10">Send confirmation to</h3> 
 
      </div> 
 
      
 
      <div class="form-group"> 
 
       <label class="col-sm-3 control-label">Name</label> 
 
       <div class="col-sm-3"> 
 
        <asp:TextBox ID="txtName" runat="server" CssClass="form-control"></asp:TextBox> 
 
       </div> 
 
       <div class="col-sm-6"> 
 
        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txtName" 
 
         Display="Dynamic" ErrorMessage="Required" CssClass="text-danger"></asp:RequiredFieldValidator> 
 
       </div> 
 
      </div> 
 
      
 
      <div class="form-group"> 
 
       <label class="col-sm-3 control-label">Email address</label> 
 
       <div class="col-sm-3"> 
 
        <asp:TextBox ID="txtEmail" runat="server" CssClass="form-control"></asp:TextBox> 
 
       </div> 
 
       <div class="col-sm-6"> 
 
        <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="txtEmail" 
 
         Display="Dynamic" ErrorMessage="Required" CssClass="text-danger"></asp:RequiredFieldValidator> 
 
       </div> 
 
      </div> 
 

 
      <%-- Quotation and Return buttons --%> 
 
      <div class="form-group"> 
 
       <div class="col-sm-offset-3 col-sm-9"> 
 
        <%-- buttons go here --%> 
 
        <asp:Button ID="Button1" runat="server" Text="Send Quotation" CssClass="btn btn-primary"/> 
 
        <asp:Button ID="Button2" runat="server" Text="Return" CssClass="btn btn-primary" PostBackUrl="~/Default.aspx" CausesValidation="false"/> 
 
       </div> 
 
      </div> 
 
      
 
      <%-- message label --%> 
 
      <div class="form-group"> 
 
       <div class="col-sm-offset-1 col-sm-11"> 
 
        <%-- message label goes here --%> 
 
        <asp:Label ID="lblmessage" runat="server" Text="Click the Send Quotation button to send the quotation via email" CssClass="text-info"></asp:Label> 
 
       </div> 
 
      </div> 
 

 
     </main> 
 

 
    </form> 
 
</body> 
 
</html>

using System; 
 
using System.Collections.Generic; 
 
using System.Linq; 
 
using System.Web; 
 
using System.Web.UI; 
 
using System.Web.UI.WebControls; 
 

 
namespace XEx04Quotation 
 
{ 
 
    public partial class Default : System.Web.UI.Page 
 
    { 
 
     protected void Page_Load(object sender, EventArgs e) 
 
     { 
 
      UnobtrusiveValidationMode = UnobtrusiveValidationMode.None; 
 
     } 
 

 
     protected void btnCalculate_Click(object sender, EventArgs e) 
 
     { 
 
      if (IsValid) 
 
      { 
 
       decimal salesPrice = Convert.ToDecimal(txtSalesPrice.Text); 
 

 
       // save the salesPrice into a session state variable 
 
       Session["SalesPrice"] = salesPrice; 
 

 

 
       decimal discountPercent = Convert.ToDecimal(txtDiscountPercent.Text)/100; 
 

 
    
 
       decimal discountAmount = salesPrice * discountPercent; 
 

 
       // save the discountAmount into a session state variable 
 
       Session["Discount"] = discountAmount; 
 

 
       
 
       decimal totalPrice = salesPrice - discountAmount; 
 

 
       // save the totalPrice into a session state variable 
 

 
       Session["TotalPrice"] = totalPrice; 
 

 
       lblDiscountAmount.Text = discountAmount.ToString("c"); 
 
       lblTotalPrice.Text = totalPrice.ToString("c"); 
 
      } 
 
     } 
 

 
     protected void Button1_Confirm(object sender, EventArgs e) 
 
     { 
 
      if(Session["SalesPrice"] != null) 
 
      { 
 
       Response.Redirect("Confirm.aspx"); 
 
      } 
 
      else 
 
      { 
 
       // This is the part I am concerned about 
 
       lblmessage2.Text = "Click the Calculate button before you click confirm"; 
 
      } 
 
      
 

 

 
     } 
 
    } 
 
}

大家好,

我建立使用的Default.aspx,Default.aspx.cs和Confirm.aspx多的Web應用程序頁面和Confirm.aspx.cs。我遇到的問題是,在點擊「計算」之前單擊「確認」時,事件處理程序會在頁面底部顯示「確認前單擊計算按鈕」。即使在確認之前單擊計算按鈕,並在重新加載頁面時也會再次顯示。 如何獲取此僅在SalesPrice的會話狀態值爲空時才顯示?否則,它將重定向到確認頁面。這裏是Default.aspx.cs和其他文件:

+0

只定義你的代碼*不*工作,而不是整個應用程序。 – AsifAli72090

+0

@Asif.Ali您只希望我包含文件Confirm.aspx和Confirm.aspx.cs? – dorakta

+0

@Asif.Ali你看到更新嗎? – dorakta

回答

2

你可以做一件事。如果你想先得到總的計算,然後禁用確認按鈕,點擊計算按鈕將如下啓用按鈕:

<asp:Button ID="Button1" runat="server" Enabled="false" /> 

protected void btnCalculate_Click(object sender, EventArgs e) 
{ 
    Button1.Enabled = True; 

    if(Session["TotalPrice"] != null) 
    { 
     lblMsg.Text = "Please click here to see total calculation"; 
    } 
} 

protected void Button1_Confirm(object sender, EventArgs e) 
{ 
    if(Session["SalesPrice"] != null) 
    { 
     Response.Redirect("Confirm.aspx"); 
    } 
} 

注意:請遵守事件名稱的命名約定。 Button1 To btnConfirm

更新1 - 嘗試下面的測試代碼:

<asp:Button ID="btnCalculate" runat="server" Text="Calculate" OnClick="btnCalculate_Click" /> 

<asp:Button ID="btnConfirm" runat="server" Text="Confirm" OnClick="btnConfirm_Click" /> 

<asp:Label ID="lblMsg" runat="server"></asp:Label> 


private int buttonWasClicked = 0; //Kept a variable type of int and with a default value 0 

protected void btnCalculate_Click(object sender, EventArgs e) 
{ 
    buttonWasClicked = 1; //If clicked, then 1 
    Session["value"] = Convert.ToInt32(buttonWasClicked); //Then kept in session 

    lblMsg.Text = "Total Price - 10,000"; 
} 

protected void btnConfirm_Click(object sender, EventArgs e) 
{ 
    if (Session["value"] != null) //If session not null, then redirect page 
    { 
     Response.Redirect("CustomerDetails.aspx"); 
     Session["value"] = null; //Clears the session 
    } 
    else 
    { 
     lblMsg.Text = "Click the calculate button first"; 
    } 
} 
+0

- 我將如何在btnCalculate_Click()事件處理程序中輸入消息「在確認之前單擊計算按鈕」? – dorakta

+0

你想放什麼信息? –

+0

「在確認之前單擊計算按鈕。」 – dorakta

相關問題