C# 无法在ASP.NET中联接表
我需要得到基于所选子类别的产品。现在,它显示所有产品。如何做到这一点?这是我的密码。如何在按钮单击中传递子类别.IdC# 无法在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"> </
...
<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