2016-07-25 42 views
0

这是前些日子,不知道发生了什么,但现在不是,我不知道。这个标签只会给我20个左右(赠送或拿出)不同的物品中的一个。无论我在我的下拉列表中选择什么,它总是会在标签上给我同样的价值。Asp:由dropdownlistbox确定的标签不能正常工作

HTML:

    <td> 
        <asp:DropDownList ID="ddlCompanyCode" runat="server" CssClass="Dropdown" AutoPostBack="True" OnSelectedIndexChanged="ddlCompanyCode_SelectedIndexChanged" Width="139px" DataSourceID="CompanyCodeDS" DataTextField="CompanyCode" DataValueField="CompanyCode"></asp:DropDownList> 
        <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="ddlCompanyCode" Display="Dynamic" ErrorMessage="*Please select a drop down list item." ForeColor="#CC0000" ValidationGroup="Submit"></asp:RequiredFieldValidator> 
       </td> 
       <td> 
        <asp:Label ID="lblSourceSyst" runat="server" CssClass="txtLabel" Text="Select Company Code" Width="137px" ></asp:Label> 
       </td> 
    <asp:SqlDataSource ID="CompanyCodeDS" runat="server" SelectCommandType="StoredProcedure" ConnectionString="<%$ ConnectionStrings:RptDatamartConnectionString %>" SelectCommand="[AXMap].[SelectCompanyCode_GLSourceCOA]"> 
    </asp:SqlDataSource> 

C#:

 protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      ddlCompanyCode.Items.Add(new ListItem("--Please Select--", "")); 
      ddlCompanyCode.AppendDataBoundItems = true; 
     } 
    } 

    protected void ddlCompanyCode_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     String connectionString = ConfigurationManager.ConnectionStrings["RptDatamartConnectionString"].ConnectionString; 
     String sqlStoredProc = "RptDatamart.AXMap.SelectCompanyCode_GLSourceCOA"; 
     SqlConnection con = new SqlConnection(connectionString); 
     SqlCommand cmd = new SqlCommand(); 
     cmd.Parameters.AddWithValue("@CompanyCode", ddlCompanyCode.SelectedItem.Value); 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.CommandText = sqlStoredProc; 
     cmd.Connection = con; 
     try 
     { 
      con.Open(); 
      SqlDataReader dataReader = cmd.ExecuteReader(); 
      while (dataReader.Read()) 
      { 
       lblSourceSyst.Text = dataReader["SourceSystem"].ToString(); 
      } 
     } 
     catch (Exception ex) 
     { 
      lblStatus.Text = ex.Message; 
     } 
    } 

然后存储过程我尝试使用...

ALTER PROCEDURE [AXMap].[SelectCompanyCode_GLSourceCOA] 
@CompanyCode varchar(10) = Null, 
@SourceSystem nvarchar(255) = Null 

AS 
BEGIN 
SET NOCOUNT OFF; 

Select distinct CompanyCode, SourceSystem from [RptDatamart].[AXMap].[GLSourceCOA] 

END 

我的SQL可能是可怕的了,但我会认为它会起作用。

回答

0
lblSourceSyst.Text = dataReader["SourceSystem"].ToString(); 

应该是:

lblSourceSyst.Text += dataReader["SourceSystem"].ToString(); 
+0

如果我这样做,它把所有的都在同一时间 – Psymbionic

+0

然后sourcesystem列到这个标签我不知道不同的项目你”再问。如果你不想要所有的项目,为什么你选择它们并循环?另外,你没有在SQL中使用你的参数。你通过它们,但你不使用它们。 – aquinas

+0

我想为公司代码和源系统选择不同的行。然后将所有公司代码放入一个下拉列表中,然后当我在ddl中选择某个内容时,与该内容相关的sourceystem的任何不同值将显示在标签中。 – Psymbionic