使用存储过程

时间:2016-06-03 11:25:39

标签: c# asp.net stored-procedures drop-down-menu

我在网上找到了几个类似主题的解决方案,但我没有找到任何明确的解决方案和解释我正在处理的案例。以下是我需要帮助的问题/领域:

  1. 如何使用第一个下拉列表(CompanyDDL)中所选公司的联系信息(电子邮件)填充第二个下拉列表(EmailDDL)。我想在这里指出的两件事是: 一个。我只有一个表而不是两个,我没有其他解决方案中提到的关联ID。 (见下文) 湾我在后面的代码中使用了存储过程(见下文)

  2. 我不太清楚OnSelectedIndexChanged =“ContactEmailList_SelectedIndexChanged”与我的sproc2 storedprocedure如何使用@Company值过滤电子邮件列表之间的差异。有人会分享这些知识吗?换句话说,第一个下拉列表中的选定值如何传递给存储过程sproc2?

  3. 我没有问题只使用下拉列表asp控件填充第一个下拉列表,而不必使用数据集或SqlDataAdapter。我是否需要将这些用于第二个下拉列表?

  4. 到目前为止,我获得了第一个下拉列表(公司列表)以及第二个下拉列表(ContactEmail)中所有电子邮件的长列表。我需要将第二个列表按第一个列表进行过滤。请帮助。如果可能的话,一步一步的方法与图示的代码样本将是非常有益的和赞赏。

    由于

  5. 背景资料:

    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)               
    {          
    //
    { 
    

1 个答案:

答案 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);
} 

下面的代码在第一次下拉菜单后调用第二次下拉列表更改事件。试试吧。