C# 选择下拉列表时,应显示表中某列的值。。如何做到这一点?
首先,我创建了一个表C# 选择下拉列表时,应显示表中某列的值。。如何做到这一点?,c#,asp.net,sql-server,stored-procedures,ado.net,C#,Asp.net,Sql Server,Stored Procedures,Ado.net,首先,我创建了一个表screery\u 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
screery\u 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.aspx
页面时
它以我想要的方式显示管理表单
问题在于“选择分支”下拉列表
我想要实现的是,当我单击下拉列表时,它应该显示杂货店分行
表中的杂货店分行
列的值列表。
相反,当我单击下拉列表时,它是空的
我不知道我犯的错误在哪里。
错误可能出现在my.cs
或.aspx
或存储过程中
如果存储过程或.aspx
或.cs
中的语法逻辑有任何错误,那么提供正确的语法解决方案将非常有用。问题在于您没有向下拉列表提供任何数据。在Web表单中,这通常通过两种方式完成:
1。使用数据源对象
在这种情况下,您应该在.aspx页面中添加此对象:
<asp:ObjectDataSource ID="[dataSourceID]" runat="server"
SelectMethod=" "
TypeName=" "
DataObjectTypeName=" ">
</asp:ObjectDataSource>
有关如何正确填写ObjectDataSource属性的
然后将以下属性添加到DropDownList:
<asp:DropDownList ID="DropDownList1" runat="server"
DataSourceID="[dataSourceID]"
DataTextField="Grocery_Branch_Name"
DataValueField="Grocery_Branch_No">
其余部分由您编写检索数据的方法
2。在页面加载事件处理程序中手动输入列表
If (!Page.IsPostBack)
{
List<GroceryBranch> allGroceryBranches = GetAllGroceryBranchesFromDB();
DropDownList1.Items.Clear();
DropDownList1.Items.AddRange(allGroceryBranches
.Select(b=> new ListItem(b.Grocery_Branch_Name, b.Grocery_Branch_No))
}
If(!Page.IsPostBack)
{
List allGroceryBranches=GetAllGroceryBranchesFromDB();
DropDownList1.Items.Clear();
DropDownList 1.Items.AddRange(所有杂货店分支)
.选择(b=>新列表项(b.杂货店\分行\名称,b.杂货店\分行\编号))
}
但是您仍然缺少从数据库检索数据的机制。问题是您没有向下拉列表提供任何数据。在Web表单中,这通常通过两种方式完成:
1.使用数据源对象
在这种情况下,您应该在.aspx页面中添加此对象:
<asp:ObjectDataSource ID="[dataSourceID]" runat="server"
SelectMethod=" "
TypeName=" "
DataObjectTypeName=" ">
</asp:ObjectDataSource>
有关如何正确填写ObjectDataSource属性的
然后将以下属性添加到DropDownList:
<asp:DropDownList ID="DropDownList1" runat="server"
DataSourceID="[dataSourceID]"
DataTextField="Grocery_Branch_Name"
DataValueField="Grocery_Branch_No">
其余部分由您编写检索数据的方法
2.在页面加载事件处理程序中手动输入列表
If (!Page.IsPostBack)
{
List<GroceryBranch> allGroceryBranches = GetAllGroceryBranchesFromDB();
DropDownList1.Items.Clear();
DropDownList1.Items.AddRange(allGroceryBranches
.Select(b=> new ListItem(b.Grocery_Branch_Name, b.Grocery_Branch_No))
}
If(!Page.IsPostBack)
{
List allGroceryBranches=GetAllGroceryBranchesFromDB();
DropDownList1.Items.Clear();
DropDownList 1.Items.AddRange(所有杂货店分支)
.选择(b=>新列表项(b.杂货店\分行\名称,b.杂货店\分行\编号))
}
但是您仍然缺少从数据库检索数据的机制。我已经解决了这个问题。
这就是我在SignUp.aspx页面中所做的
<asp:DropDownList AppendDataBoundItems ="true" ID ="DropDownList1" runat="server" DataSourceID="SqlDataSource1" DataTextField="Grocery_Branch_Name" DataValueField="Grocery_Branch_Name">
<Items>
<asp:ListItem Value="" >Select a Branch</asp:ListItem>
</Items>
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:Grocery_DemoConnectionString %>" SelectCommand="SELECT [Grocery_Branch_Name] FROM [Grocery_Branch]"></asp:SqlDataSource>
<asp:RequiredFieldValidator ID="RequiredFieldValidator6" runat="server" ControlToValidate="DropDownList1" ErrorMessage="Branch is not selected"></asp:RequiredFieldValidator>
选择一个分支
我已经解决了这个问题。
这就是我在SignUp.aspx页面中所做的
<asp:DropDownList AppendDataBoundItems ="true" ID ="DropDownList1" runat="server" DataSourceID="SqlDataSource1" DataTextField="Grocery_Branch_Name" DataValueField="Grocery_Branch_Name">
<Items>
<asp:ListItem Value="" >Select a Branch</asp:ListItem>
</Items>
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:Grocery_DemoConnectionString %>" SelectCommand="SELECT [Grocery_Branch_Name] FROM [Grocery_Branch]"></asp:SqlDataSource>
<asp:RequiredFieldValidator ID="RequiredFieldValidator6" runat="server" ControlToValidate="DropDownList1" ErrorMessage="Branch is not selected"></asp:RequiredFieldValidator>
选择一个分支
dropdownlist没有绑定到任何数据源,是吗?这可以解释为什么它是空的。或者您是否在代码后面附加了一个数据源,却忘记发布相关代码?感谢您的响应。不,下拉列表没有任何数据源。dropdownlist没有绑定到任何数据源,是吗?这可以解释为什么它是空的。或者你是否在代码背后附加了数据源,却忘记发布相关代码?谢谢你的回复。不,下拉列表中没有任何数据源。我已经修复了它…现在它工作了…你可以参考我的答案部分查看代码我已经修复了它…现在它工作了…你可以参考我的答案部分to查看代码