2016-07-25 62 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