我在asp.net网页上有一个下拉列表DDL1
,它与特定数据库中所有表中的“Product”列数据绑定。现在我的问题是,如果我从DDL1
中选择一个产品名称,那些拥有该产品名称的客户应绑定另一个DDL2
的下拉列表。我每个客户都有桌子。我根据列的名称获取客户名称,但我希望客户名称基于列值。什么是查询/存储过程和代码? (Asp.Net,Sql-2014,C#)。
答案 0 :(得分:0)
如果我理解正确,你有7个表格,其架构类似于:
Sno int,
Product varchar,
Picture varchar
首先使用所有可能的产品名称填充DropDownList。 然后你选择这个DropDownList的一个项目,例如:'Pen',你需要知道哪些表有Product ='Pen'。
一种可能的解决方案是构建一个过滤每个表并填充第二个DropDownList的函数。
string [] table_name = {"Table1","Table2",...};
private void FillSecondDDL(string product_name)
{
DDL2.Items.Clear();
foreach(string tname in table_name)
{
if (HasThisProduct(tname, product_name)
{
DDL2.Items.Add(tname);
}
}
}
private bool HasThisProduct(string table_name, string product_name)
{
string cmd = string.Format("select Sno from {0} where Product='{1}'"
, table_name
, product_name);
using (SqlConnection connection = new SqlConnection(connectionString))
{
DataTable table;
SqlDataAdapter adapter = new SqlDataAdapter();
adp.SelectCommand = new SqlCommand(cmd, connection);
adp.Fill(table);
return table.Rows.Count > 0 ? true : false;
}
}
只是为了给你一个想法。
答案 1 :(得分:0)
有许多不同的方法可以实现这一目标。这是一个:
<body>
<form id="form1" runat="server">
<div>
<asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="SqlDataSource1" DataTextField="Title" DataValueField="Id" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" AutoPostBack="True">
</asp:DropDownList>
<asp:DropDownList ID="DropDownList2" runat="server" DataSourceID="SqlDataSource2" DataTextField="Name" DataValueField="Id" AutoPostBack="True">
</asp:DropDownList>
</div>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="[YOUR CONNECTION STRING]" ProviderName="System.Data.SqlClient" SelectCommand="SELECT [Id], [Title] FROM [Products]"></asp:SqlDataSource>
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="[YOUR CONNECTION STRING]" ProviderName="System.Data.SqlClient" SelectCommand="SELECT * FROM [Customers] WHERE ([ProductId] = @ProductId)">
<SelectParameters>
<asp:ControlParameter ControlID="DropDownList1" Name="ProductId" PropertyName="SelectedValue" Type="Int32" DefaultValue="1" />
</SelectParameters>
</asp:SqlDataSource>
</form>
</body>
您需要的唯一C#代码是:
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
this.DropDownList2.DataBind();
}