0
<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';

基本上我想要做的是从日期表中选择所有值并将它们与项目表中的一些值连接起来并输出到 DataList。

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

谢谢。

4

2 回答 2

0

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

于 2012-06-12T19:46:49.967 回答
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

于 2012-04-21T08:03:13.010 回答