【发布时间】:2019-01-14 09:29:40
【问题描述】:
首先我创建了一个表Grocery_Branch,然后我插入了值:
CREATE TABLE Grocery_Branch
(Grocery_Branch_No INTEGER IDENTITY(1,1) PRIMARY KEY,
Grocery_Branch_Name VARCHAR(50) UNIQUE NOT NULL,
Grocery_Branch_Address VARCHAR(50) UNIQUE NOT NULL,
Grocery_Phone_No VARCHAR(20) UNIQUE NOT NULL
)
INSERT INTO Grocery_Branch (Grocery_Branch_Name,Grocery_Branch_Address,Grocery_Phone_No)
VALUES('Inala','39 Lavender Street, Inala QLD 4077','0423957193')
INSERT INTO Grocery_Branch (Grocery_Branch_Name,Grocery_Branch_Address,Grocery_Phone_No)
VALUES('Richlands','1 Progress Road, Richlands QLD 4077','0423957192')
INSERT INTO Grocery_Branch (Grocery_Branch_Name,Grocery_Branch_Address,Grocery_Phone_No)
VALUES ('Forest Lake','235 Forest Lake Boulevard, Forest Lake QLD 4078','0423957191')
然后我创建了管理员表:
CREATE TABLE Administrator
(Administrator_No INTEGER IDENTITY(1,1) PRIMARY KEY,
Administrator_Name VARCHAR(50) NOT NULL,
Administrator_Username VARCHAR(30) UNIQUE NOT NULL,
Administrator_Password VARCHAR(30) NOT NULL,
Administrator_Phone_No VARCHAR(20) UNIQUE NOT NULL,
Administrator_Email VARCHAR(30) UNIQUE NOT NULL,
Grocery_Branch_No INTEGER NOT NULL FOREIGN KEY REFERENCES Grocery_Branch(Grocery_Branch_No)
)
然后我为管理员注册创建了一个存储过程:
CREATE PROCEDURE AdminRegistration
@AdministratorName VARCHAR(50),
@AdministratorUsername VARCHAR(30),
@AdministratorPassword VARCHAR(30),
@AdministratorPhoneNo VARCHAR(20),
@AdministratorEmail VARCHAR(30),
@GroceryBranchName VARCHAR(20)
AS
BEGIN
INSERT INTO Administrator(Administrator_Name,Administrator_Username,Administrator_Password,Administrator_Phone_No,Administrator_Email,Grocery_Branch_No)
SELECT @AdministratorName,@AdministratorUsername,@AdministratorPassword, @AdministratorPhoneNo,@AdministratorEmail,(SELECT Grocery_Branch_No FROM Grocery_Branch WHERE Grocery_Branch_Name = @GroceryBranchName)
END
那么这就是我在SignUp.aspx所做的:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<p>
<strong>SIGN UP</strong></p>
<p>
Name:
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TextBox1" ErrorMessage="This field is required"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="TextBox1" ErrorMessage="Alphabets only" ValidationExpression="^[a-zA-Z\s]*$"></asp:RegularExpressionValidator>
</p>
<p>
Username:
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="TextBox2" ErrorMessage="This field is required"></asp:RequiredFieldValidator>
</p>
<p>
Password:
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="TextBox3" ErrorMessage="This field is required"></asp:RequiredFieldValidator>
</p>
<p>
Phone No:
<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" ControlToValidate="TextBox4" ErrorMessage="This field is required"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator2" runat="server" ControlToValidate="TextBox4" ErrorMessage="Numbers only" ValidationExpression="^[0-9]*$" />
</p>
<p>
Email:
<asp:TextBox ID="TextBox5" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator5" runat="server" ControlToValidate="TextBox5" ErrorMessage="This field is required"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator3" runat="server" ControlToValidate="TextBox5" ErrorMessage="Email should have @ and .com" ValidationExpression="^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$" />
</p>
<p>
Select Branch:
<asp:DropDownList ID="DropDownList1" runat="server">
</asp:DropDownList>
<asp:RequiredFieldValidator ID="RequiredFieldValidator6" runat="server" ControlToValidate="DropDownList1" ErrorMessage="Please select a branch"></asp:RequiredFieldValidator>
</p>
<p>
</p>
<p>
<asp:Button ID="Button1" runat="server" OnClick="Register" Text="Register" />
</p>
</form>
</body>
</html>
那么这就是我在SignUp.cs所做的:
using System;
using System.Web.UI;
using System.Data.SqlClient;
namespace Grocery_Demo
{
public partial class SignUp : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Register(object sender, EventArgs e)
{
string CS;
CS = "data source=LAPTOP-ODS96MIK\\MSSQL2014; database = Grocery_Demo; integrated security=SSPI";
SqlConnection con = new SqlConnection(CS);
SqlCommand cmd = new SqlCommand("AdminRegistration", con);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
con.Open();
cmd.Parameters.AddWithValue("@AdministrationName", TextBox1.Text);
cmd.Parameters.AddWithValue("@AdministrationUsername", TextBox2.Text);
cmd.Parameters.AddWithValue("@AdministrationPassword", TextBox3.Text);
cmd.Parameters.AddWithValue("@AdministrationPhoneNo", TextBox4.Text);
cmd.Parameters.AddWithValue("@AdministrationEmail", TextBox5.Text);
cmd.Parameters.AddWithValue("@GroceryBranchName", DropDownList1.SelectedValue);
cmd.ExecuteNonQuery();
MessageBox("You are registered successfully");
Session["Username"] = TextBox2.Text;
Session["Password"] = TextBox3.Text;
Response.Redirect("AdminHomepage.aspx");
con.Close();
}
public void MessageBox(string message)
{
Page.ClientScript.RegisterStartupScript(Page.GetType(), "MessageBox", "<script language='javascript'>alert('" + message + "')</script>");
}
}
}
当我运行SignUp.aspx 页面时
它以我想要的方式显示管理表单。
问题在于“选择分支”下拉列表。
我想要实现的是,当我单击下拉列表时,它应该显示Grocery_Branch 表中Grocery_Branch_Name 列的值列表。
相反,当我单击它时,下拉列表是空的。
我不知道我犯的错误在哪里。
错误可能在我的.cs 或.aspx 或存储过程中。
如果我的存储过程或.aspx 或.cs 中的语法逻辑有任何错误,那么如果提供正确的语法解决方案将非常有帮助。
【问题讨论】:
-
下拉列表没有绑定到任何数据源,是吗?这可以解释为什么它是空的。还是您在后面的代码中附加了数据源而忘记发布相关代码?
-
感谢您的回复。不,下拉列表没有任何数据源。
标签: c# asp.net sql-server stored-procedures ado.net