ASP.NET VB Page_Load Only Once 或替代方案
我有点不知道该做什么!我有一个特殊的表单,允许我的客户请求特定产品的报价(由 url 中的 PID 定义)。该表单加载到模式对话和 Iframe 内。 Iframe 的 src 值是通过产品页面上 ahref 的 onclick 事件设置的,例如;
<div id='basic-modal'><p><br /><br /><a href='#' class='basic' onClick="document.getElementById('ifr').src='quote/Public/Default.aspx?PID=111'">CLICK ME</a></p></div>
<div id="basic-modal-content">
<iframe id="ifr" width="850px" height="600px" frameborder="0" scrolling="no"></iframe>
当 Page_Load 被触发时,我正在加载的表单会执行 SQL 插入。也正是在其中 如果 Page.IsPostBack = False 那么
出于某种奇怪的原因,页面在页面加载时执行两次,在页面关闭时执行另一次。我需要在第一页加载时执行 SQL 插入,因为返回的值由我的表单使用。任何人都可以建议一种使 Page_Load 中的代码仅启动一次的好方法吗?
非常感谢!
更新,完整代码:
aspx 页面
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="Public_Default" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<link href="../quoteFront.css" rel="stylesheet" type="text/css" />
<title></title>
<style type="text/css">
.style1
{
width: 100%;
}
.style2
{
height: 26px;
}
.style5
{
width: 299px;
}
.style6
{
width: 174px;
}
.style7
{
height: 26px;
width: 174px;
}
.style8
{
width: 291px;
}
.style9
{
height: 26px;
width: 189px;
}
.style10
{
}
.style11
{
width: 189px;
}
.style12
{
width: 191px;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<cc1:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server" EnablePartialRendering="true" CombineScripts="false" >
</cc1:ToolkitScriptManager>
</div>
<asp:UpdatePanel ID="UpdatePanel3" runat="server"><ContentTemplate>
<asp:Panel ID="Panel2" runat="server">
<table class="style1">
<tr>
<td class="style12">
First name</td>
<td class="style5">
<asp:TextBox ID="txtFirstName" runat="server" Width="300px"
AutoCompleteType="FirstName"></asp:TextBox>
</td>
<td>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ControlToValidate="txtFirstName" ErrorMessage="* Required" ForeColor="Red"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td class="style12">
Last name</td>
<td class="style5">
<asp:TextBox ID="txtLastName" runat="server" Width="300px"
AutoCompleteType="LastName"></asp:TextBox>
</td>
<td>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server"
ControlToValidate="txtLastName" ErrorMessage="* Required" ForeColor="Red"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td class="style12">
Company name</td>
<td class="style5">
<asp:TextBox ID="txtCompanyName" runat="server" Width="300px"
AutoCompleteType="Company"></asp:TextBox>
</td>
<td>
</td>
</tr>
<tr>
<td class="style12">
Email address</td>
<td class="style5">
<asp:TextBox ID="txtEmailAddress" runat="server" Width="300px" AutoCompleteType="Email"></asp:TextBox>
</td>
<td>
<asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server"
ControlToValidate="txtEmailAddress" ErrorMessage="* Required"
ForeColor="Red"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"
ControlToValidate="txtEmailAddress" ErrorMessage=" * Invalid email address"
ForeColor="Red"
ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"></asp:RegularExpressionValidator>
</td>
</tr>
<tr>
<td class="style12">
Phone number</td>
<td class="style5">
<asp:TextBox ID="txtPhoneNumber" runat="server" Width="300px" AutoCompleteType="BusinessPhone"></asp:TextBox>
</td>
<td>
<asp:RequiredFieldValidator ID="RequiredFieldValidator5" runat="server"
ControlToValidate="txtPhoneNumber" ErrorMessage="* Required"
ForeColor="Red"></asp:RequiredFieldValidator>
</td>
</tr>
</table>
<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<ContentTemplate>
<div>
<table class="style1">
<tr>
<td class="style11">
Quantity required</td>
<td class="style6">
<asp:TextBox ID="txtQuantity1" runat="server" AutoPostBack="True"></asp:TextBox>
<cc1:FilteredTextBoxExtender ID="ftbe" runat="server" FilterType="Numbers"
TargetControlID="txtQuantity1" />
</td>
<td>
<asp:RequiredFieldValidator ID="RequiredFieldValidator6" runat="server"
ControlToValidate="txtQuantity1"
ErrorMessage="* Please enter quantity required" ForeColor="Red"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td class="style11">
<asp:Label ID="lblDesigninfo" runat="server" Text="Printing info"></asp:Label>
</td>
<td class="style6">
<asp:DropDownList ID="drpDesignInfo1" runat="server" AutoPostBack="True"
DataSourceID="SqlDataSource1" DataTextField="PrintInfoDesc"
DataValueField="ID" AppendDataBoundItems="True">
<asp:ListItem></asp:ListItem>
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:quotingSystemConnectionString %>"
SelectCommand="SELECT [ID], [PrintInfoDesc] FROM [PrintInfo]">
</asp:SqlDataSource>
</td>
<td>
<asp:RequiredFieldValidator ID="RequiredFieldValidator7" runat="server"
ControlToValidate="drpDesignInfo1" ErrorMessage="* Please select"
ForeColor="Red"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td class="style11">
<asp:Label ID="lblColoursSideOne1" runat="server"
Text="Colour options first side" Visible="True"></asp:Label>
</td>
<td class="style6">
<asp:DropDownList ID="drpColoursSideOne1" runat="server" Visible="True"
AutoPostBack="True">
</asp:DropDownList>
</td>
<td>
</td>
</tr>
<tr>
<td class="style9">
<asp:Label ID="lblColoursSideTwo1" runat="server"
Text="Colour options second side" Visible="false"></asp:Label>
</td>
<td class="style7">
<asp:DropDownList ID="drpColoursSideTwo1" runat="server" Visible="false">
</asp:DropDownList>
</td>
<td class="style2">
</td>
</tr>
</table>
</div>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="txtQuantity1" EventName="TextChanged" />
<asp:AsyncPostBackTrigger ControlID="drpDesignInfo1"
EventName="SelectedIndexChanged" />
<asp:AsyncPostBackTrigger ControlID="drpColoursSideOne1"
EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
<asp:UpdatePanel ID="UpdatePanel1" runat="server"><ContentTemplate>
<div style="text-align: center">Please fill in the above fields before uploading
artwork.
<br />
When the upload is complete you will get the option to upload additional
artwork.
<cc1:AsyncFileUpload ID="AsyncFileUpload1" runat="server"
CompleteBackColor="Lime" ErrorBackColor="Red"
OnClientUploadComplete="UploadComplete" OnClientUploadError="uploadError"
OnClientUploadStarted="StartUpload"
onuploadedcomplete="AsyncFileUpload1_UploadedComplete" ThrobberID="Throbber"
UploaderStyle="Modern" UploadingBackColor="#66CCFF" Width="100%"
ClientIDMode="Inherit" />
<asp:Label ID="Throbber" runat="server" Style="display: none">
<img src="../Images/indicator.gif" align="absmiddle" alt="loading" />
</asp:Label><asp:Label ID="lblStatus" runat="server"></asp:Label>
<br />
<div style="max-height:70px; overflow : auto; ">
<asp:Label ID="lblUploadList" runat="server" ForeColor="#006600"
Font-Size="Smaller"></asp:Label>
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
<table class="style1">
<tr>
<td class="style10">
Any aditional info<asp:TextBox ID="txtComments" runat="server" Height="111px"
TextMode="MultiLine" Width="100%"></asp:TextBox>
</td>
</tr>
<tr>
<td class="style8">
<asp:Button ID="Button1" runat="server" Text="Send Request" Width="100%"
Height="45px" Font-Bold="False" />
</td>
</tr>
</table>
</asp:Panel>
<br />
<asp:Panel ID="Panel1" runat="server" Visible="False">
Thank you for requesting a quote. A member of our sales team will be in touch
shortly.<br />
<br />
<asp:Button ID="btnRequestAnother" runat="server"
Text="Request another quote for this product" CausesValidation="False"
Height="45px" Width="100%"/>
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
<script type="text/javascript" language="javascript">
function uploadError(sender, args) {
document.getElementById("lblStatus").innerHTML = "Failed to upload " + args.get_fileName() + ". Please try again. If problem persistes please email [email protected]";
document.getElementById("Button1").innerHTML = 'Send Request';
}
function StartUpload(sender, args) {
document.getElementById("lblStatus").innerHTML = 'Uploading Started. Depending on your connection speed this can take a very long time. Please wait....';
document.getElementById("Button1").innerHTML = 'Uploading Started. Please Wait....';
}
function UploadComplete(sender, args) {
var filename = args.get_fileName();
var contentType = args.get_contentType();
var text = "Upload Complete, Press Select File to upload more. " //"Size of " + filename + " is " + args.get_length() + " bytes";
if (contentType.length > 0) {
text //+= " and content type is '" + contentType + "'.";
}
document.getElementById("lblStatus").innerHTML = text;
document.getElementById("lblUploadList").innerHTML = document.getElementById("lblUploadList").innerHTML + "<br />" + filename + " Uploaded Successfully";
document.getElementById("Button1").innerHTML = 'Send Request';
}
</script>
</form>
</body>
VB 代码:
Imports System.Data
Imports System.IO
Imports System.Data.SqlClient
Partial Class Public_Default
Inherits System.Web.UI.Page
Dim ArtworkID As Integer
Dim customerIDDecrypt As String
Public QuoteID As Integer
Dim UploadedFileList As String
Dim productID As String
'Shared IsFirstTime As Boolean = False
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
productID = Request.QueryString("PID")
customerIDDecrypt = "0"
'If Not Page.IsPostBack AndAlso Not IsFirstTime Then
If Not Page.IsPostBack Then
Try
Dim sql As String = "INSERT INTO [Quote] (Status, CreationDate, CreationTime, CustomerID, ProductID, IP)" & _
"VALUES (@Status, @CreationDate, @CreationTime, @CustomerID, @ProductID, @IP) SELECT SCOPE_IDENTITY()"
Using cn As New SqlConnection(ConfigurationManager.AppSettings("quotingSystemConnectionString")), _
cmd As New SqlCommand(sql, cn)
cmd.Parameters.Add("@Status", SqlDbType.NVarChar).Value = 1
cmd.Parameters.Add("@CreationDate", SqlDbType.Date).Value = Date.UtcNow.ToLocalTime
cmd.Parameters.Add("@CreationTime", SqlDbType.Time).Value = Date.UtcNow.ToLocalTime.TimeOfDay
cmd.Parameters.Add("@CustomerID", SqlDbType.Int).Value = customerIDDecrypt
cmd.Parameters.Add("@ProductID", SqlDbType.Int).Value = productID
cmd.Parameters.Add("@IP", SqlDbType.NVarChar).Value = CStr(Request.UserHostAddress())
cn.Open()
'//grab the ID of this insert.
QuoteID = Integer.Parse(cmd.ExecuteScalar().ToString())
cn.Close()
'IsFirstTime = True
End Using
Catch ex As Exception
'// do something with this error!
Response.Write(ex.Message)
End Try
End If
End Sub
Protected Sub txtQuantity1_TextChanged(sender As Object, e As System.EventArgs) Handles txtQuantity1.TextChanged
'//populate colours dependant on quantity
If txtQuantity1.Text > "" Then
If txtQuantity1.Text < "100" Then
'side one
drpColoursSideOne1.Items.Clear()
'drpColoursSideOne1.Enabled = True
drpColoursSideOne1.Items.Add(New ListItem("One colour", "1"))
drpColoursSideOne1.Items.Add(New ListItem("More than one colour", "full"))
drpColoursSideOne1.Items.Add(New ListItem("I don't know!", "help"))
drpColoursSideOne1.Visible = True
'side two
drpColoursSideTwo1.Items.Clear()
'drpColoursSideTwo1.Enabled = True
drpColoursSideTwo1.Items.Add(New ListItem("One colour", "1"))
drpColoursSideTwo1.Items.Add(New ListItem("More than one colour", "full"))
drpColoursSideTwo1.Items.Add(New ListItem("I don't know!", "help"))
drpColoursSideTwo1.Items.Add(New ListItem("na", "na"))
Else
'side one
drpColoursSideOne1.Items.Clear()
'drpColoursSideOne1.Enabled = True
drpColoursSideOne1.Items.Add(New ListItem("One colour", "1"))
drpColoursSideOne1.Items.Add(New ListItem("Two colours", "2"))
drpColoursSideOne1.Items.Add(New ListItem("Three colours", "3"))
drpColoursSideOne1.Items.Add(New ListItem("Four colours", "4"))
drpColoursSideOne1.Items.Add(New ListItem("Five colours", "5"))
drpColoursSideOne1.Items.Add(New ListItem("Full colour (eg, photo)", "full"))
drpColoursSideOne1.Items.Add(New ListItem("I don't know!", "help"))
'side two
drpColoursSideTwo1.Items.Clear()
'drpColoursSideTwo1.Enabled = True
drpColoursSideTwo1.Items.Add(New ListItem("One colour", "1"))
drpColoursSideTwo1.Items.Add(New ListItem("Two colours", "2"))
drpColoursSideTwo1.Items.Add(New ListItem("Three colours", "3"))
drpColoursSideTwo1.Items.Add(New ListItem("Four colours", "4"))
drpColoursSideTwo1.Items.Add(New ListItem("Five colours", "5"))
drpColoursSideTwo1.Items.Add(New ListItem("Full colour (eg, photo)", "full"))
drpColoursSideTwo1.Items.Add(New ListItem("I don't know!", "help"))
drpColoursSideTwo1.Items.Add(New ListItem("na", "na"))
End If
Else
'nothing
End If
End Sub
Protected Sub drpDesignInfo1_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles drpDesignInfo1.SelectedIndexChanged
If drpDesignInfo1.SelectedValue = "1" And txtQuantity1.Text > "0" Then
lblColoursSideTwo1.Visible = False
lblColoursSideOne1.Visible = True
drpColoursSideOne1.Visible = True
drpColoursSideOne1.Enabled = True
drpColoursSideTwo1.Visible = False
drpColoursSideTwo1.Enabled = False
drpColoursSideTwo1.SelectedValue = "na"
' drpColoursSideTwo1.Items.Remove(New ListItem("Same as the first side", "same"))
ElseIf drpDesignInfo1.SelectedValue = "3" And txtQuantity1.Text > "0" Then
lblColoursSideOne1.Visible = True
drpColoursSideOne1.Visible = True
drpColoursSideOne1.Enabled = True
lblColoursSideTwo1.Visible = True
drpColoursSideTwo1.Visible = True
drpColoursSideTwo1.Enabled = True
' drpColoursSideTwo1.Items.Remove(New ListItem("Same as the first side", "same"))
ElseIf drpDesignInfo1.SelectedValue = "2" And txtQuantity1.Text > "0" Then
lblColoursSideOne1.Visible = True
drpColoursSideOne1.Visible = True
drpColoursSideOne1.Enabled = True
lblColoursSideTwo1.Visible = True
drpColoursSideTwo1.Visible = True
drpColoursSideTwo1.Enabled = False
' Dim tmpCount2 = drpColoursSideTwo1.Items.Count
' If tmpCount2 = 7 Or tmpCount2 = 3 Then
'drpColoursSideTwo1.Items.Add(New ListItem("Same as the first side", "same"))
'End If
drpColoursSideTwo1.SelectedValue = drpColoursSideOne1.SelectedValue
End If
End Sub
Protected Sub AsyncFileUpload1_UploadedComplete(sender As Object, e As AjaxControlToolkit.AsyncFileUploadEventArgs)
System.Threading.Thread.Sleep(3000)
If AsyncFileUpload1.HasFile Then
'Dim strPath As String = newPath + Path.GetFileName(e.FileName)
'AsyncFileUpload1.SaveAs(strPath)
Dim fileName = Path.GetFileName(e.FileName)
'Dim imageBytes(AsyncFileUpload1.PostedFile.InputStream.Length) As Byte
'AsyncFileUpload1.PostedFile.InputStream.Read(imageBytes, 0, imageBytes.length)
Dim imageBytes = AsyncFileUpload1.FileBytes
'AsyncFileUpload1.FileBytes
'// now insert this into the database
Try
Dim sql As String = "INSERT INTO [UploadedFiles] (CustomerID, FileName, FileSize, FileContent, FileType, FileUploadDate, QuoteID)" & _
"VALUES (@CustomerID, @FileName, @FileSize, @FileContent, @FileType, @FileUploadDate, @QuoteID) SELECT SCOPE_IDENTITY()"
Using cn As New SqlConnection(ConfigurationManager.AppSettings("quotingSystemConnectionStringLargeTimeout")), _
cmd As New SqlCommand(sql, cn)
cmd.CommandTimeout = "3600"
cmd.Parameters.Add("@CustomerID", SqlDbType.Int).Value = 1
cmd.Parameters.Add("@FileName", SqlDbType.NVarChar).Value = fileName
cmd.Parameters.Add("@FileSize", SqlDbType.NVarChar).Value = AsyncFileUpload1.PostedFile.ContentLength
cmd.Parameters.Add("@FileContent", SqlDbType.VarBinary).Value = imageBytes
cmd.Parameters.Add("@FileType", SqlDbType.NVarChar, 50).Value = AsyncFileUpload1.PostedFile.ContentType
cmd.Parameters.Add("@FileUploadDate", SqlDbType.Date).Value = Date.UtcNow.ToLocalTime
cmd.Parameters.Add("@QuoteID", SqlDbType.Int).Value = QuoteID
cn.Open()
'//grab the ID of this insert.
ArtworkID = Integer.Parse(cmd.ExecuteScalar().ToString())
cn.Close()
End Using
Catch ex As Exception
'// do something with this error!
Response.Write(ex.Message)
End Try
End If
End Sub
Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
'// Populate the database with remaining information
Button1.Text = "Please Wait... Sending Request"
Dim thisConnection As New SqlConnection(ConfigurationManager.AppSettings("quotingSystemConnectionString"))
'Create Command object
Dim nonqueryCommand As SqlCommand = thisConnection.CreateCommand()
Try
' Open Connection
thisConnection.Open()
' 1. Create Command
' Sql Update Statement
Dim updateSql As String = "UPDATE Quote " & _
"SET Status = '2', FirstName = @FirstName, LastName = @LastName, CompanyName = @CompanyName, Email = @Email, Phone = @Phone, Quantity = @Quantity, DesignInfo = @DesignInfo, CS1 = @CS1, CS2 = @CS2, Comments = @Comments " & _
"WHERE QuoteID = " & QuoteID
Dim UpdateCmd As New SqlCommand(updateSql, thisConnection)
' 2. Map Parameters
'UpdateCmd.Parameters.Add("@Status", SqlDbType.Int, "Status")
UpdateCmd.Parameters.Add("@FirstName", SqlDbType.NVarChar, 100, "FirstName")
UpdateCmd.Parameters.Add("@LastName", SqlDbType.NVarChar, 100, "LastName")
UpdateCmd.Parameters.Add("@CompanyName", SqlDbType.NVarChar, 100, "CompanyName")
UpdateCmd.Parameters.Add("@Email", SqlDbType.NVarChar, 200, "Email")
UpdateCmd.Parameters.Add("@Phone", SqlDbType.NVarChar, 30, "Phone")
UpdateCmd.Parameters.Add("@Quantity", SqlDbType.Int, 20, "Quantity")
UpdateCmd.Parameters.Add("@DesignInfo", SqlDbType.NVarChar, 100, "DesignInfo")
UpdateCmd.Parameters.Add("@CS1", SqlDbType.NVarChar, 20, "CS1")
UpdateCmd.Parameters.Add("@CS2", SqlDbType.NVarChar, 20, "CS2")
UpdateCmd.Parameters.Add("@Comments", SqlDbType.NVarChar, 1000, "Comments")
''''''''''''''
'UpdateCmd.Parameters("@Status").Value = 2
UpdateCmd.Parameters("@FirstName").Value = txtFirstName.Text
UpdateCmd.Parameters("@LastName").Value = txtLastName.Text
UpdateCmd.Parameters("@CompanyName").Value = txtCompanyName.Text
UpdateCmd.Parameters("@Email").Value = txtEmailAddress.Text
UpdateCmd.Parameters("@Phone").Value = txtPhoneNumber.Text
UpdateCmd.Parameters("@Quantity").Value = txtQuantity1.Text
UpdateCmd.Parameters("@DesignInfo").Value = drpDesignInfo1.SelectedValue
UpdateCmd.Parameters("@CS1").Value = drpColoursSideOne1.SelectedValue
Dim CS2 As String
If drpDesignInfo1.SelectedValue = "1" Then
CS2 = "na"
Else
CS2 = drpColoursSideTwo1.SelectedValue
End If
UpdateCmd.Parameters("@CS2").Value = CS2
UpdateCmd.Parameters("@Comments").Value = txtComments.Text
'QuoteID
'''''''''''''''
UpdateCmd.ExecuteNonQuery()
Catch ex As SqlException
' Display error
Response.Write("FAIL: " & ex.Message)
Finally
' Close Connection
thisConnection.Close()
Panel1.Visible = True
Panel2.Visible = False
End Try
End Sub
Protected Sub btnRequestAnother_Click(sender As Object, e As System.EventArgs) Handles btnRequestAnother.Click
QuoteID = Nothing
Response.Redirect(Request.RawUrl)
Panel1.Visible = False
Panel2.Visible = True
'IsFirstTime = False
End Sub
Protected Sub drpColoursSideOne1_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles drpColoursSideOne1.SelectedIndexChanged
If drpDesignInfo1.SelectedValue = "2" Then
drpColoursSideTwo1.SelectedValue = drpColoursSideOne1.SelectedValue
End If
End Sub
End Class
请原谅我凌乱的代码...
I'm a little stuck on what to do! I have a special form that allows my customers to request a quote for a specific product (defined by PID in url) The form is loaded inside a modal dialogue and within that a Iframe. The Iframe's src value is set from the onclick event of ahref on the product pages eg;
<div id='basic-modal'><p><br /><br /><a href='#' class='basic' onClick="document.getElementById('ifr').src='quote/Public/Default.aspx?PID=111'">CLICK ME</a></p></div>
<div id="basic-modal-content">
<iframe id="ifr" width="850px" height="600px" frameborder="0" scrolling="no"></iframe>
The form that I am loading does a SQL insert when Page_Load is fired. Also it is within
If Page.IsPostBack = False Then
For some strange reason the page is doing it twice when the page loads and another time when the page is closed.. I need the SQL insert on the first page load as the returned values are used by my form. Can anyone suggest a good way of making the code within Page_Load only fire up once?
Many thanks!
UPDATE, Full Code:
aspx page
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="Public_Default" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<link href="../quoteFront.css" rel="stylesheet" type="text/css" />
<title></title>
<style type="text/css">
.style1
{
width: 100%;
}
.style2
{
height: 26px;
}
.style5
{
width: 299px;
}
.style6
{
width: 174px;
}
.style7
{
height: 26px;
width: 174px;
}
.style8
{
width: 291px;
}
.style9
{
height: 26px;
width: 189px;
}
.style10
{
}
.style11
{
width: 189px;
}
.style12
{
width: 191px;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<cc1:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server" EnablePartialRendering="true" CombineScripts="false" >
</cc1:ToolkitScriptManager>
</div>
<asp:UpdatePanel ID="UpdatePanel3" runat="server"><ContentTemplate>
<asp:Panel ID="Panel2" runat="server">
<table class="style1">
<tr>
<td class="style12">
First name</td>
<td class="style5">
<asp:TextBox ID="txtFirstName" runat="server" Width="300px"
AutoCompleteType="FirstName"></asp:TextBox>
</td>
<td>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ControlToValidate="txtFirstName" ErrorMessage="* Required" ForeColor="Red"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td class="style12">
Last name</td>
<td class="style5">
<asp:TextBox ID="txtLastName" runat="server" Width="300px"
AutoCompleteType="LastName"></asp:TextBox>
</td>
<td>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server"
ControlToValidate="txtLastName" ErrorMessage="* Required" ForeColor="Red"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td class="style12">
Company name</td>
<td class="style5">
<asp:TextBox ID="txtCompanyName" runat="server" Width="300px"
AutoCompleteType="Company"></asp:TextBox>
</td>
<td>
</td>
</tr>
<tr>
<td class="style12">
Email address</td>
<td class="style5">
<asp:TextBox ID="txtEmailAddress" runat="server" Width="300px" AutoCompleteType="Email"></asp:TextBox>
</td>
<td>
<asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server"
ControlToValidate="txtEmailAddress" ErrorMessage="* Required"
ForeColor="Red"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"
ControlToValidate="txtEmailAddress" ErrorMessage=" * Invalid email address"
ForeColor="Red"
ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"></asp:RegularExpressionValidator>
</td>
</tr>
<tr>
<td class="style12">
Phone number</td>
<td class="style5">
<asp:TextBox ID="txtPhoneNumber" runat="server" Width="300px" AutoCompleteType="BusinessPhone"></asp:TextBox>
</td>
<td>
<asp:RequiredFieldValidator ID="RequiredFieldValidator5" runat="server"
ControlToValidate="txtPhoneNumber" ErrorMessage="* Required"
ForeColor="Red"></asp:RequiredFieldValidator>
</td>
</tr>
</table>
<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<ContentTemplate>
<div>
<table class="style1">
<tr>
<td class="style11">
Quantity required</td>
<td class="style6">
<asp:TextBox ID="txtQuantity1" runat="server" AutoPostBack="True"></asp:TextBox>
<cc1:FilteredTextBoxExtender ID="ftbe" runat="server" FilterType="Numbers"
TargetControlID="txtQuantity1" />
</td>
<td>
<asp:RequiredFieldValidator ID="RequiredFieldValidator6" runat="server"
ControlToValidate="txtQuantity1"
ErrorMessage="* Please enter quantity required" ForeColor="Red"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td class="style11">
<asp:Label ID="lblDesigninfo" runat="server" Text="Printing info"></asp:Label>
</td>
<td class="style6">
<asp:DropDownList ID="drpDesignInfo1" runat="server" AutoPostBack="True"
DataSourceID="SqlDataSource1" DataTextField="PrintInfoDesc"
DataValueField="ID" AppendDataBoundItems="True">
<asp:ListItem></asp:ListItem>
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:quotingSystemConnectionString %>"
SelectCommand="SELECT [ID], [PrintInfoDesc] FROM [PrintInfo]">
</asp:SqlDataSource>
</td>
<td>
<asp:RequiredFieldValidator ID="RequiredFieldValidator7" runat="server"
ControlToValidate="drpDesignInfo1" ErrorMessage="* Please select"
ForeColor="Red"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td class="style11">
<asp:Label ID="lblColoursSideOne1" runat="server"
Text="Colour options first side" Visible="True"></asp:Label>
</td>
<td class="style6">
<asp:DropDownList ID="drpColoursSideOne1" runat="server" Visible="True"
AutoPostBack="True">
</asp:DropDownList>
</td>
<td>
</td>
</tr>
<tr>
<td class="style9">
<asp:Label ID="lblColoursSideTwo1" runat="server"
Text="Colour options second side" Visible="false"></asp:Label>
</td>
<td class="style7">
<asp:DropDownList ID="drpColoursSideTwo1" runat="server" Visible="false">
</asp:DropDownList>
</td>
<td class="style2">
</td>
</tr>
</table>
</div>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="txtQuantity1" EventName="TextChanged" />
<asp:AsyncPostBackTrigger ControlID="drpDesignInfo1"
EventName="SelectedIndexChanged" />
<asp:AsyncPostBackTrigger ControlID="drpColoursSideOne1"
EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
<asp:UpdatePanel ID="UpdatePanel1" runat="server"><ContentTemplate>
<div style="text-align: center">Please fill in the above fields before uploading
artwork.
<br />
When the upload is complete you will get the option to upload additional
artwork.
<cc1:AsyncFileUpload ID="AsyncFileUpload1" runat="server"
CompleteBackColor="Lime" ErrorBackColor="Red"
OnClientUploadComplete="UploadComplete" OnClientUploadError="uploadError"
OnClientUploadStarted="StartUpload"
onuploadedcomplete="AsyncFileUpload1_UploadedComplete" ThrobberID="Throbber"
UploaderStyle="Modern" UploadingBackColor="#66CCFF" Width="100%"
ClientIDMode="Inherit" />
<asp:Label ID="Throbber" runat="server" Style="display: none">
<img src="../Images/indicator.gif" align="absmiddle" alt="loading" />
</asp:Label><asp:Label ID="lblStatus" runat="server"></asp:Label>
<br />
<div style="max-height:70px; overflow : auto; ">
<asp:Label ID="lblUploadList" runat="server" ForeColor="#006600"
Font-Size="Smaller"></asp:Label>
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
<table class="style1">
<tr>
<td class="style10">
Any aditional info<asp:TextBox ID="txtComments" runat="server" Height="111px"
TextMode="MultiLine" Width="100%"></asp:TextBox>
</td>
</tr>
<tr>
<td class="style8">
<asp:Button ID="Button1" runat="server" Text="Send Request" Width="100%"
Height="45px" Font-Bold="False" />
</td>
</tr>
</table>
</asp:Panel>
<br />
<asp:Panel ID="Panel1" runat="server" Visible="False">
Thank you for requesting a quote. A member of our sales team will be in touch
shortly.<br />
<br />
<asp:Button ID="btnRequestAnother" runat="server"
Text="Request another quote for this product" CausesValidation="False"
Height="45px" Width="100%"/>
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
<script type="text/javascript" language="javascript">
function uploadError(sender, args) {
document.getElementById("lblStatus").innerHTML = "Failed to upload " + args.get_fileName() + ". Please try again. If problem persistes please email [email protected]";
document.getElementById("Button1").innerHTML = 'Send Request';
}
function StartUpload(sender, args) {
document.getElementById("lblStatus").innerHTML = 'Uploading Started. Depending on your connection speed this can take a very long time. Please wait....';
document.getElementById("Button1").innerHTML = 'Uploading Started. Please Wait....';
}
function UploadComplete(sender, args) {
var filename = args.get_fileName();
var contentType = args.get_contentType();
var text = "Upload Complete, Press Select File to upload more. " //"Size of " + filename + " is " + args.get_length() + " bytes";
if (contentType.length > 0) {
text //+= " and content type is '" + contentType + "'.";
}
document.getElementById("lblStatus").innerHTML = text;
document.getElementById("lblUploadList").innerHTML = document.getElementById("lblUploadList").innerHTML + "<br />" + filename + " Uploaded Successfully";
document.getElementById("Button1").innerHTML = 'Send Request';
}
</script>
</form>
</body>
VB CODE:
Imports System.Data
Imports System.IO
Imports System.Data.SqlClient
Partial Class Public_Default
Inherits System.Web.UI.Page
Dim ArtworkID As Integer
Dim customerIDDecrypt As String
Public QuoteID As Integer
Dim UploadedFileList As String
Dim productID As String
'Shared IsFirstTime As Boolean = False
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
productID = Request.QueryString("PID")
customerIDDecrypt = "0"
'If Not Page.IsPostBack AndAlso Not IsFirstTime Then
If Not Page.IsPostBack Then
Try
Dim sql As String = "INSERT INTO [Quote] (Status, CreationDate, CreationTime, CustomerID, ProductID, IP)" & _
"VALUES (@Status, @CreationDate, @CreationTime, @CustomerID, @ProductID, @IP) SELECT SCOPE_IDENTITY()"
Using cn As New SqlConnection(ConfigurationManager.AppSettings("quotingSystemConnectionString")), _
cmd As New SqlCommand(sql, cn)
cmd.Parameters.Add("@Status", SqlDbType.NVarChar).Value = 1
cmd.Parameters.Add("@CreationDate", SqlDbType.Date).Value = Date.UtcNow.ToLocalTime
cmd.Parameters.Add("@CreationTime", SqlDbType.Time).Value = Date.UtcNow.ToLocalTime.TimeOfDay
cmd.Parameters.Add("@CustomerID", SqlDbType.Int).Value = customerIDDecrypt
cmd.Parameters.Add("@ProductID", SqlDbType.Int).Value = productID
cmd.Parameters.Add("@IP", SqlDbType.NVarChar).Value = CStr(Request.UserHostAddress())
cn.Open()
'//grab the ID of this insert.
QuoteID = Integer.Parse(cmd.ExecuteScalar().ToString())
cn.Close()
'IsFirstTime = True
End Using
Catch ex As Exception
'// do something with this error!
Response.Write(ex.Message)
End Try
End If
End Sub
Protected Sub txtQuantity1_TextChanged(sender As Object, e As System.EventArgs) Handles txtQuantity1.TextChanged
'//populate colours dependant on quantity
If txtQuantity1.Text > "" Then
If txtQuantity1.Text < "100" Then
'side one
drpColoursSideOne1.Items.Clear()
'drpColoursSideOne1.Enabled = True
drpColoursSideOne1.Items.Add(New ListItem("One colour", "1"))
drpColoursSideOne1.Items.Add(New ListItem("More than one colour", "full"))
drpColoursSideOne1.Items.Add(New ListItem("I don't know!", "help"))
drpColoursSideOne1.Visible = True
'side two
drpColoursSideTwo1.Items.Clear()
'drpColoursSideTwo1.Enabled = True
drpColoursSideTwo1.Items.Add(New ListItem("One colour", "1"))
drpColoursSideTwo1.Items.Add(New ListItem("More than one colour", "full"))
drpColoursSideTwo1.Items.Add(New ListItem("I don't know!", "help"))
drpColoursSideTwo1.Items.Add(New ListItem("na", "na"))
Else
'side one
drpColoursSideOne1.Items.Clear()
'drpColoursSideOne1.Enabled = True
drpColoursSideOne1.Items.Add(New ListItem("One colour", "1"))
drpColoursSideOne1.Items.Add(New ListItem("Two colours", "2"))
drpColoursSideOne1.Items.Add(New ListItem("Three colours", "3"))
drpColoursSideOne1.Items.Add(New ListItem("Four colours", "4"))
drpColoursSideOne1.Items.Add(New ListItem("Five colours", "5"))
drpColoursSideOne1.Items.Add(New ListItem("Full colour (eg, photo)", "full"))
drpColoursSideOne1.Items.Add(New ListItem("I don't know!", "help"))
'side two
drpColoursSideTwo1.Items.Clear()
'drpColoursSideTwo1.Enabled = True
drpColoursSideTwo1.Items.Add(New ListItem("One colour", "1"))
drpColoursSideTwo1.Items.Add(New ListItem("Two colours", "2"))
drpColoursSideTwo1.Items.Add(New ListItem("Three colours", "3"))
drpColoursSideTwo1.Items.Add(New ListItem("Four colours", "4"))
drpColoursSideTwo1.Items.Add(New ListItem("Five colours", "5"))
drpColoursSideTwo1.Items.Add(New ListItem("Full colour (eg, photo)", "full"))
drpColoursSideTwo1.Items.Add(New ListItem("I don't know!", "help"))
drpColoursSideTwo1.Items.Add(New ListItem("na", "na"))
End If
Else
'nothing
End If
End Sub
Protected Sub drpDesignInfo1_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles drpDesignInfo1.SelectedIndexChanged
If drpDesignInfo1.SelectedValue = "1" And txtQuantity1.Text > "0" Then
lblColoursSideTwo1.Visible = False
lblColoursSideOne1.Visible = True
drpColoursSideOne1.Visible = True
drpColoursSideOne1.Enabled = True
drpColoursSideTwo1.Visible = False
drpColoursSideTwo1.Enabled = False
drpColoursSideTwo1.SelectedValue = "na"
' drpColoursSideTwo1.Items.Remove(New ListItem("Same as the first side", "same"))
ElseIf drpDesignInfo1.SelectedValue = "3" And txtQuantity1.Text > "0" Then
lblColoursSideOne1.Visible = True
drpColoursSideOne1.Visible = True
drpColoursSideOne1.Enabled = True
lblColoursSideTwo1.Visible = True
drpColoursSideTwo1.Visible = True
drpColoursSideTwo1.Enabled = True
' drpColoursSideTwo1.Items.Remove(New ListItem("Same as the first side", "same"))
ElseIf drpDesignInfo1.SelectedValue = "2" And txtQuantity1.Text > "0" Then
lblColoursSideOne1.Visible = True
drpColoursSideOne1.Visible = True
drpColoursSideOne1.Enabled = True
lblColoursSideTwo1.Visible = True
drpColoursSideTwo1.Visible = True
drpColoursSideTwo1.Enabled = False
' Dim tmpCount2 = drpColoursSideTwo1.Items.Count
' If tmpCount2 = 7 Or tmpCount2 = 3 Then
'drpColoursSideTwo1.Items.Add(New ListItem("Same as the first side", "same"))
'End If
drpColoursSideTwo1.SelectedValue = drpColoursSideOne1.SelectedValue
End If
End Sub
Protected Sub AsyncFileUpload1_UploadedComplete(sender As Object, e As AjaxControlToolkit.AsyncFileUploadEventArgs)
System.Threading.Thread.Sleep(3000)
If AsyncFileUpload1.HasFile Then
'Dim strPath As String = newPath + Path.GetFileName(e.FileName)
'AsyncFileUpload1.SaveAs(strPath)
Dim fileName = Path.GetFileName(e.FileName)
'Dim imageBytes(AsyncFileUpload1.PostedFile.InputStream.Length) As Byte
'AsyncFileUpload1.PostedFile.InputStream.Read(imageBytes, 0, imageBytes.length)
Dim imageBytes = AsyncFileUpload1.FileBytes
'AsyncFileUpload1.FileBytes
'// now insert this into the database
Try
Dim sql As String = "INSERT INTO [UploadedFiles] (CustomerID, FileName, FileSize, FileContent, FileType, FileUploadDate, QuoteID)" & _
"VALUES (@CustomerID, @FileName, @FileSize, @FileContent, @FileType, @FileUploadDate, @QuoteID) SELECT SCOPE_IDENTITY()"
Using cn As New SqlConnection(ConfigurationManager.AppSettings("quotingSystemConnectionStringLargeTimeout")), _
cmd As New SqlCommand(sql, cn)
cmd.CommandTimeout = "3600"
cmd.Parameters.Add("@CustomerID", SqlDbType.Int).Value = 1
cmd.Parameters.Add("@FileName", SqlDbType.NVarChar).Value = fileName
cmd.Parameters.Add("@FileSize", SqlDbType.NVarChar).Value = AsyncFileUpload1.PostedFile.ContentLength
cmd.Parameters.Add("@FileContent", SqlDbType.VarBinary).Value = imageBytes
cmd.Parameters.Add("@FileType", SqlDbType.NVarChar, 50).Value = AsyncFileUpload1.PostedFile.ContentType
cmd.Parameters.Add("@FileUploadDate", SqlDbType.Date).Value = Date.UtcNow.ToLocalTime
cmd.Parameters.Add("@QuoteID", SqlDbType.Int).Value = QuoteID
cn.Open()
'//grab the ID of this insert.
ArtworkID = Integer.Parse(cmd.ExecuteScalar().ToString())
cn.Close()
End Using
Catch ex As Exception
'// do something with this error!
Response.Write(ex.Message)
End Try
End If
End Sub
Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
'// Populate the database with remaining information
Button1.Text = "Please Wait... Sending Request"
Dim thisConnection As New SqlConnection(ConfigurationManager.AppSettings("quotingSystemConnectionString"))
'Create Command object
Dim nonqueryCommand As SqlCommand = thisConnection.CreateCommand()
Try
' Open Connection
thisConnection.Open()
' 1. Create Command
' Sql Update Statement
Dim updateSql As String = "UPDATE Quote " & _
"SET Status = '2', FirstName = @FirstName, LastName = @LastName, CompanyName = @CompanyName, Email = @Email, Phone = @Phone, Quantity = @Quantity, DesignInfo = @DesignInfo, CS1 = @CS1, CS2 = @CS2, Comments = @Comments " & _
"WHERE QuoteID = " & QuoteID
Dim UpdateCmd As New SqlCommand(updateSql, thisConnection)
' 2. Map Parameters
'UpdateCmd.Parameters.Add("@Status", SqlDbType.Int, "Status")
UpdateCmd.Parameters.Add("@FirstName", SqlDbType.NVarChar, 100, "FirstName")
UpdateCmd.Parameters.Add("@LastName", SqlDbType.NVarChar, 100, "LastName")
UpdateCmd.Parameters.Add("@CompanyName", SqlDbType.NVarChar, 100, "CompanyName")
UpdateCmd.Parameters.Add("@Email", SqlDbType.NVarChar, 200, "Email")
UpdateCmd.Parameters.Add("@Phone", SqlDbType.NVarChar, 30, "Phone")
UpdateCmd.Parameters.Add("@Quantity", SqlDbType.Int, 20, "Quantity")
UpdateCmd.Parameters.Add("@DesignInfo", SqlDbType.NVarChar, 100, "DesignInfo")
UpdateCmd.Parameters.Add("@CS1", SqlDbType.NVarChar, 20, "CS1")
UpdateCmd.Parameters.Add("@CS2", SqlDbType.NVarChar, 20, "CS2")
UpdateCmd.Parameters.Add("@Comments", SqlDbType.NVarChar, 1000, "Comments")
''''''''''''''
'UpdateCmd.Parameters("@Status").Value = 2
UpdateCmd.Parameters("@FirstName").Value = txtFirstName.Text
UpdateCmd.Parameters("@LastName").Value = txtLastName.Text
UpdateCmd.Parameters("@CompanyName").Value = txtCompanyName.Text
UpdateCmd.Parameters("@Email").Value = txtEmailAddress.Text
UpdateCmd.Parameters("@Phone").Value = txtPhoneNumber.Text
UpdateCmd.Parameters("@Quantity").Value = txtQuantity1.Text
UpdateCmd.Parameters("@DesignInfo").Value = drpDesignInfo1.SelectedValue
UpdateCmd.Parameters("@CS1").Value = drpColoursSideOne1.SelectedValue
Dim CS2 As String
If drpDesignInfo1.SelectedValue = "1" Then
CS2 = "na"
Else
CS2 = drpColoursSideTwo1.SelectedValue
End If
UpdateCmd.Parameters("@CS2").Value = CS2
UpdateCmd.Parameters("@Comments").Value = txtComments.Text
'QuoteID
'''''''''''''''
UpdateCmd.ExecuteNonQuery()
Catch ex As SqlException
' Display error
Response.Write("FAIL: " & ex.Message)
Finally
' Close Connection
thisConnection.Close()
Panel1.Visible = True
Panel2.Visible = False
End Try
End Sub
Protected Sub btnRequestAnother_Click(sender As Object, e As System.EventArgs) Handles btnRequestAnother.Click
QuoteID = Nothing
Response.Redirect(Request.RawUrl)
Panel1.Visible = False
Panel2.Visible = True
'IsFirstTime = False
End Sub
Protected Sub drpColoursSideOne1_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles drpColoursSideOne1.SelectedIndexChanged
If drpDesignInfo1.SelectedValue = "2" Then
drpColoursSideTwo1.SelectedValue = drpColoursSideOne1.SelectedValue
End If
End Sub
End Class
Please excuse my messy code...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你可以这样做:
之后。
在insertdata() 将数据插入数据库
you can do like this:
After this
insertdata() inserts data into database.