我在网上找到了几个类似主题的解决方案,但我没有找到任何明确的解决方案和解释我正在处理的案例。以下是我需要帮助的问题/领域:
如何使用第一个下拉列表(CompanyDDL)中所选公司的联系信息(电子邮件)填充第二个下拉列表(EmailDDL)。我想在这里指出的两件事是: 一个。我只有一个表而不是两个,我没有其他解决方案中提到的关联ID。 (见下文) 湾我在后面的代码中使用了存储过程(见下文)
我不太清楚OnSelectedIndexChanged =“ContactEmailList_SelectedIndexChanged”与我的sproc2 storedprocedure如何使用@Company值过滤电子邮件列表之间的差异。有人会分享这些知识吗?换句话说,第一个下拉列表中的选定值如何传递给存储过程sproc2?
我没有问题只使用下拉列表asp控件填充第一个下拉列表,而不必使用数据集或SqlDataAdapter。我是否需要将这些用于第二个下拉列表?
到目前为止,我获得了第一个下拉列表(公司列表)以及第二个下拉列表(ContactEmail)中所有电子邮件的长列表。我需要将第二个列表按第一个列表进行过滤。请帮助。如果可能的话,一步一步的方法与图示的代码样本将是非常有益的和赞赏。
由于
背景资料:
2个存储过程:sproc1和sproc2以及1个SQL表(ContactInfo),包含3列:
公司,ContactName,ContactEmail。
sproc1: procedure [dbo].[sproc1]
as
begin
Select distinct [Company] From [ContactInfo]
end
sproc2: procedure [dbo].[sproc2] @Company nvarchar(50) = null
as
begin
Select distinct [ContactName],[ContactEmail] From [ContactInfo]
where [Company] = @Company
end
aspx:
//First Dropdownlist:
<p>Company:<br />
<asp:DropDownList ID="Company_DDList" runat="server"
Width="355px" Height="24px"
DataSourceID="ContactInfo"
DataTextField="Company"
DataValueField="Company"
AutoPostBack="true"
AppendDataBoundItems="true"
onselectedindexchanged =
"Company_DDList_SelectedIndexChanged">
<asp:ListItem Enabled="true"
Selected="True"
Text="-- select --">
</asp:ListItem>
</asp:DropDownList>
<asp:SqlDataSource ID="ContactInfo" runat="server"
ConnectionString="<%$ ConnectionStrings:My_ConnectionString %>"
SelectCommand="sproc1"
SelectCommandType="StoredProcedure">
</asp:SqlDataSource>
//Second Dropdownlist:
<p>Contact:<br />
<asp:DropDownList ID="Contact_DDList" runat="server"
Width="355px" Height="24px"
DataSourceID="ContactInfo"
DataTextField="Email"
DataValueField="Email"
AutoPostBack="true"
AppendDataBoundItems="true"
onselectedindexchanged="Contact_DDList_SelectedIndexChanged">
<asp:ListItem Enabled="true"
Selected="True"
Text="-- select --">
</asp:ListItem>
</asp:DropDownList>
<asp:SqlDataSource ID="ContactInfo" runat="server"
ConnectionString="<%$ ConnectionStrings:My_ConnectionString %>"
SelectCommand="sproc2"
SelectCommandType="StoredProcedure">
</asp:SqlDataSource>
aspx.c //////////////////////////////
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Net.Mail;
using System.Net;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
public string query;
SqlConnection con = new
SqlConnection(ConfigurationManager.ConnectionStrings
["MyConnectionString"].ConnectionString);
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
con.Open();
//SubmitButton.Enabled = false;
//Label1.Visible = false;
}
protected void Company_DDList_SelectedIndexChanged(object sender, EventArgs
e)
{
query = "sproc2";
SqlCommand cmd = new SqlCommand(query, con);
cmd.CommandType = CommandType.StoredProcedure;
?????
}
protected void Contact_DDList_SelectedIndexChanged(object sender, EventArgs
e)
{
//
{
答案 0 :(得分:0)
您可以在完成第一次下拉菜单后调用第二次下拉列表更改事件
protected void Company_DDList_SelectedIndexChanged(object sender, EventArgs
e)
{
query = "sproc2";
SqlCommand cmd = new SqlCommand(query, con);
cmd.CommandType = CommandType.StoredProcedure;
Contact_DDList_SelectedIndexChanged(sender, e);
}
下面的代码在第一次下拉菜单后调用第二次下拉列表更改事件。试试吧。