0

我正在执行一个SSRS rpt并且需要在一个带有sqldatasource id 的web 项目中复制它。

就填充参数而言,这些ssrs rpt参数工作得很好,但是当我尝试在网络版本中完成相同的事情时,第二个参数列表永远不会被填充。

Ship参数取决于在CruiseLine参数中选择的内容。

网页版参数如下:

<tr>
                <td>
                    Select a CruiseLine:
                    <telerik:radcombobox id="RadComboBox1" runat="server" checkboxes="True" enablecheckallitemscheckbox="False"
                        skin="Web20" sort="Ascending" allowcustomtext="True" datasourceid="SqlDataSource1"
                        datatextfield="CruiseLine" datavaluefield="CruiseLine">
                    </telerik:radcombobox>
                    <asp:RequiredFieldValidator runat="server" ID="RequiredFieldValidator3" ValidationGroup="A"
                        ControlToValidate="RadComboBox1" ErrorMessage="Choose a CruiseLine!"></asp:RequiredFieldValidator>
                </td>
                <td>
                    Select a Ship:
                    <telerik:radcombobox id="RadComboBox2" runat="server" checkboxes="True" enablecheckallitemscheckbox="False"
                        skin="Web20" sort="Ascending" allowcustomtext="True" datasourceid="SqlDataSource2"
                        datatextfield="Ship" datavaluefield="Ship">
                    </telerik:radcombobox>
                    <asp:RequiredFieldValidator runat="server" ID="RequiredFieldValidator2" ValidationGroup="A"
                        ControlToValidate="RadComboBox2" ErrorMessage="Choose a Ship!"></asp:RequiredFieldValidator>
                </td>
            </tr>

下面是对应的 SQL 数据源:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:PrepaidConnectionString %>"
            SelectCommand="SelectCruiseLine" DataSourceMode="DataSet" EnableCaching="true"
            SelectCommandType="StoredProcedure"></asp:SqlDataSource>
        <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:PrepaidConnectionString %>"
            SelectCommand="SelectShip" DataSourceMode="DataSet" EnableCaching="true" SelectCommandType="StoredProcedure">
            <SelectParameters>
                <asp:Parameter Name="CruiseLine" Type="String" />
            </SelectParameters>
        </asp:SqlDataSource>

第一个 sqldatasource 执行以下 sql(来自存储过程并毫无问题地填充列表:

SELECT DISTINCT CruiseLine
        FROM dbo.ShipProductPrices
        ORDER BY CruiseLine

第二个sqldatasource执行以下 sql(也来自存储过程):

ALTER PROCEDURE [dbo].[SelectShip] 
@CruiseLine NVARCHAR(MAX)
AS
BEGIN
    SET NOCOUNT ON;

    SELECT DISTINCT Ship
        FROM dbo.ShipProductPrices
        WHERE CruiseLine IN (SELECT * FROM dbo.SplitParameterValues(@CruiseLine, ','))
        ORDER BY Ship
END

现在,我只选择一条邮轮,我希望当我拉下第二个组合框的下拉列表时,它应该运行类似于以下内容的查询并填充 Ship 组合框:

SELECT DISTINCT Ship
        FROM dbo.ShipProductPrices
        WHERE CruiseLine IN (SELECT * FROM dbo.SplitParameterValues('CCL', ','))
        ORDER BY Ship

注意Ship 的参数类型combobox和. 它们有点不同。不知道这是否有所作为。SelectParameterSelectShip datasource

SelectShip SPROC执行一个UDF再次是sproc我在上面手动运行的数据的一部分,数据在 sql management studio 中输出。

我需要做什么才能填充第二个combobox

4

0 回答 0