Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 选择下拉列表时,应显示表中某列的值。。如何做到这一点?_C#_Asp.net_Sql Server_Stored Procedures_Ado.net - Fatal编程技术网

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>
            &nbsp;</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查看代码