C# 无法在ASP.NET中联接表

C# 无法在ASP.NET中联接表,c#,asp.net,.net,webforms,C#,Asp.net,.net,Webforms,我需要得到基于所选子类别的产品。现在,它显示所有产品。如何做到这一点?这是我的密码。如何在按钮单击中传递子类别.Id ... <td>Subcategory</td> <td> <asp:DropDownList ID="DropDownList2" runat="server" DataSourceID="SqlDataSource2" DataTextField="Name" DataValueField="Id"> </

我需要得到基于所选子类别的产品。现在,它显示所有产品。如何做到这一点?这是我的密码。如何在按钮单击中传递子类别.Id

...
<td>Subcategory</td>
<td>
    <asp:DropDownList ID="DropDownList2" runat="server" DataSourceID="SqlDataSource2" DataTextField="Name" DataValueField="Id">
    </asp:DropDownList>

    <asp:SqlDataSource ID="SqlDataSource2"
         runat="server"
         ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
         SelectCommand="SELECT [Id], [Name] FROM [SubCategory] WHERE ([IdCategory] = @IdCategory)">
        <SelectParameters>
            <asp:ControlParameter ControlID="DropDownList1" Name="IdCategory" PropertyName="SelectedValue" Type="Int32" />
        </SelectParameters>
    </asp:SqlDataSource>

</td>
</tr>
<tr>
<td>
    <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
</td>
</tr>
...



protected void Button1_Click(object sender, EventArgs e)
{
...
        SqlCommand command = new SqlCommand("SELECT productName, quantity, price FROM Product JOIN SubCategory ON Product.id_subcategory = SubCategory.id", _connection);
...

}

假设您具有以下数据库表结构:

Product
- Id (PK)
- ProductName
- Quantity
- Price
- MainCatID (FK)
- SubCatID (FK)
- others...

Category
- Id (PK)
- Name

SubCategory
- Id (PK)
- Name
- IdCategory (FK)
确保添加名称空间System.Configuration,以便可以从web.config文件访问连接字符串。 实例化SqlConnection类以标识数据库连接: 创建方法以显示来自其各自下拉列表控件的类别和子类别列表 将AutoPostBack属性包括到DropDownList1中,然后将其设置为true,以便每次从列表中选择项目时,它都会根据所选类别值“重新生成”子类别列表。 调用DisplaySubCategories方法创建DropDownList1的OnSelectedIndexChanged事件。 创建一个方法,该方法将根据所选类别和子类别值显示产品列表 包括从步骤4到DropDownList2的类似过程 在页面加载事件中调用这两个方法。
PS:某些语法可能不区分大小写,目前我没有使用IDE。

假设您具有以下数据库表结构:

Product
- Id (PK)
- ProductName
- Quantity
- Price
- MainCatID (FK)
- SubCatID (FK)
- others...

Category
- Id (PK)
- Name

SubCategory
- Id (PK)
- Name
- IdCategory (FK)
确保添加名称空间System.Configuration,以便可以从web.config文件访问连接字符串。 实例化SqlConnection类以标识数据库连接: 创建方法以显示来自其各自下拉列表控件的类别和子类别列表 将AutoPostBack属性包括到DropDownList1中,然后将其设置为true,以便每次从列表中选择项目时,它都会根据所选类别值“重新生成”子类别列表。 调用DisplaySubCategories方法创建DropDownList1的OnSelectedIndexChanged事件。 创建一个方法,该方法将根据所选类别和子类别值显示产品列表 包括从步骤4到DropDownList2的类似过程 在页面加载事件中调用这两个方法。 PS:某些语法可能不区分大小写,目前我没有使用IDE。

我假设DropDownList2控件已经包含子类别数据

您可以在Button1\u Click事件中使用获取子类别ID

DropDownList2.SelectedValue
我假设DropDownList2控件已经包含子类别数据

您可以在Button1\u Click事件中使用获取子类别ID

DropDownList2.SelectedValue

寻求调试帮助的问题此代码为什么不起作用?必须包括所需的行为、特定的问题或错误以及在问题本身中重现这些问题所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建一个最小的、完整的和可验证的示例。寻求调试帮助的问题此代码为什么不起作用?必须包括所需的行为、特定的问题或错误以及在问题本身中重现这些问题所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。参见:如何创建一个最小的、完整的、可验证的示例。但我不明白,为什么每个产品显示11次,而不是1次。var query=从Product.id\u SubCategory=+DropDownList2.SelectedValue上的Product JOIN子类别中选择产品名称、数量、价格;SqlCommand=newsqlcommandquery,_连接;reader=command.ExecuteReader;reader.Read{result+=Name=+Convert.toString阅读器[productName]+;}ReadAllOutput.Text=result}您是否直接在sql server management studio中测试了该sql查询?这可能与您的数据或表结构有关,从而导致不必要的重复。仅此而已。但我不明白,为什么每个产品显示11次,而不是1次。var query=从Product.id\u SubCategory=+DropDownList2.SelectedValue上的Product JOIN子类别中选择产品名称、数量、价格;SqlCommand=newsqlcommandquery,_连接;reader=command.ExecuteReader;reader.Read{result+=Name=+Convert.toString阅读器[productName]+;}ReadAllOutput.Text=result}您是否直接在sql server management studio中测试了该sql查询?这可能与您的数据或表结构有关,从而导致不必要的重复。
DropDownList2.SelectedValue