为具有未知数量的变量的SqlDataSource SelectCommand设置SelectParameter

时间:2012-04-20 13:35:54

标签: asp.net sql-server

<asp:SqlDataSource ID="workHourListSqlDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:PlaningSystemConnectionString %>" 
     SelectCommand="SELECT *
                    FROM Date AS t1 FULL OUTER JOIN (SELECT * FROM WorkHoursEntry WHERE (WorkerID LIKE @WorkerID)) AS t2 ON t1.PKDate = t2.WorkDay 
                    LEFT OUTER JOIN Worker AS t3 ON t2.WorkerID = t3.WorkerID 
                    LEFT OUTER JOIN (SELECT * FROM Project WHERE ProjectID IN(@Project)) AS t4 ON t2.ProjectID = t4.ProjectID"
     FilterExpression="YearMonth IN({0})">
     <FilterParameters>
        <asp:ControlParameter ControlID="yearMonthFilterLabel" Name="YearMonth" 
                    PropertyName="Text" Type="String" />
     </FilterParameters>
     <SelectParameters>
        <asp:ControlParameter ControlID="WorkerIDLabel" Name="WorkerID" 
                    PropertyName="Text" Type="String" />
        <asp:ControlParameter ControlID="projectFilterLabel" Name="Project" 
                    PropertyName="Text" Type="String" />
    </SelectParameters>
</asp:SqlDataSource>

问候,我有@Project ControlParameter的问题,问题是我不知道如何传递几个值而FilterParameters方法将无法正常工作。有没有办法传递几个变量? (不使用c#)。

projectFilterLabel.Text = 'aaa, bbb, ccc';

基本上我想要做的是从Date表中选择所有值,并将它们与Project表中的一些值连接并输出到DataList。

任何帮助表示感谢,我刚开始学习asp.net

感谢。

2 个答案:

答案 0 :(得分:0)

在您的asp表单中创建一个javascript函数来处理报表窗口的打开。在此函数中,将参数(var pPassParm)值设置为textbox.text(隐藏在父窗体上)并通过打开窗口传递此值(/reportfolder/report.asx?pPassparm)

在执行代码上,创建一段代码,将所有参数连接成一个字符串(textbox.text ='StartDate = 2012/01/01,EndDate = 2012/02/01,Surname = Jones'等)打开报告的新表格。

请参阅帖子Open a new window and pass parameters to it vb.net asp

答案 1 :(得分:0)

我通过在事件上为SqlDataSource创建带有参数(替换旧的)的新查询来解决这个问题。