2013-10-08 20 views
2
傳遞一個值

我的頁面目前看起來是這樣的:上SelectedIndexChange

<!-- Datasource --> 

<asp:SqlDataSource ID="SqlDataSource_GetURL" runat="server" ConnectionString="<%$ ConnectionStrings:TEST_DEV1 %>" SelectCommand="TEST_GetReports" SelectCommandType="StoredProcedure"> 
    <SelectParameters> 

     <asp:Parameter DefaultValue="0" Name="CustomerID" Type="String" /> 
     <asp:Parameter DefaultValue="0" Name="UserId" Type="String" /> 

    </SelectParameters> 
</asp:SqlDataSource> 

<!-- Dropdown List --> 

Company: <asp:DropDownList ID="ddlCompanyList" 
runat="server" OnSelectedIndexChanged="ddlCompanyList_SelectedIndexChanged" 
AutoPostBack="true" DataSourceID="SqlDataSource_GetURL" 
DataValueField="RSReportLinkID" DataTextField="ReportName" CssClass="select"> 

</asp:DropDownList> 

<!-- Report Viewer --> 

<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> 
    <rsweb:ReportViewer ID="ReportViewer1" runat="server" Font-Names="Verdana" Width="930px" Height="1000" Font-Size="8pt" ProcessingMode="Remote" WaitMessageFont-Names="Verdana" WaitMessageFont-Size="14pt"> 
     <ServerReport ReportPath="/Systems/Test/Report 1" ReportServerUrl="http://test/ReportServer" /> 
      </rsweb:ReportViewer> 

其背後的代碼是:

protected void ddlCompanyList_SelectedIndexChanged(object sender, EventArgs e) 
{ 

    //TODO: change to SP 
    string strConnectionString = ConfigurationManager.ConnectionStrings[Constants.ConnectionStringName].ConnectionString; 
    string strCustomerID = CommonCode.GetCurrentCustomerID(); 
    string strUserID = CommonCode.GetCurrentUserID().ToString(); 
    using (SqlConnection connection = new SqlConnection(strConnectionString)) 
    { 
     connection.Open(); 
     SqlCommand command = new SqlCommand("TEST_GetReportSettingsForReport", connection); 
     command.CommandType = CommandType.StoredProcedure; 
     command.Parameters.AddWithValue("@CustomerID", strCustomerID); 
     command.Parameters.AddWithValue("@UserId", strUserID); 
     command.Parameters.AddWithValue("@RSReportLinkID", "5CCD639D-E930-4896-AE36-323EC3495D24"); 
; 


     SqlDataReader reader = command.ExecuteReader(); 

     if (reader.HasRows) 
     { 
      while (reader.Read()) 
      { 
       Response.Write(reader.GetValue(3)); 

      } 
     } 

     else 
     { 
      /* Console.WriteLine("No rows found.");*/ 
     } 

     reader.Close(); 
     connection.Close(); 
    } 


} 

目前@RSReportLinkID被硬編碼爲5CCD639D-E930-4896-AE36 -323EC3495D24,所以當通過下拉列表選擇報告時,ddlCompanyList_SelectedIndexChanged將執行它的魔術,並由於此行從我的表的第四列返回ReportPath:

Response.Write(reader.GetValue(3)); 

但是,我的問題是,如何將ReportLinkID傳遞給@RSReportLinkID而不是硬編碼?我的下拉列表中的選項正在通過從表格中獲取報表列表的存儲過程提供。每個報告在第一列中都有一個ReportLinkID,所以我希望只做一些事情,例如...從下拉列表中選擇一個報告,這將是一個SelectedIndexChange,我的表的第一列被抓取(這將是ReportLinkID),然後傳遞到我的代碼並存儲在@RSReportLinkID中。

感謝您的任何幫助或信息!我有一種感覺,這是非常簡單的事情,會涉及使用對象發件人和EventArgs e,但是我無法繞過它。

回答

1

我想你需要存儲RSReportLinkID作爲下拉列表的值。這樣在ddlCompanyList_SelectedIndexChanged方法中,您將可以像這樣訪問它:

​​
+0

感謝您的迴應Chris!我知道這將是一件簡單可笑的事情......像魅力一樣工作。 – JimmyK

相關問題