我目前正在ASP.NET网格视图中运行查询,该查询使用文本框中的过滤器。我目前的代码如下:
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ERPW2MIGConnectionString %>"
SelectCommand="SELECT TOP 1000000 * FROM DWH.AIXW2S_T6946_TRANS_IMS"
FilterExpression= "C6946_TRANS_NUM LIKE '{0}' AND (C6946_PART_KEY LIKE '{1}' OR ALIGNED_PART_NUMBER LIKE '{1}' OR C1001_ENG_PART_NUMBER LIKE '{1}') AND C6946_TRANS_DATE >= #{2}# AND C6946_TRANS_DATE <= #{3}#">
<FilterParameters>
<asp:ControlParameter ControlID="TextBox2" Name="TRANS_NUM" PropertyName="text" Type="String" DefaultValue="" ConvertEmptyStringToNull="false"/>
<asp:ControlParameter ControlID="TextBox3" Name="PART_KEY" PropertyName="text" Type="string" DefaultValue="" ConvertEmptyStringToNull="false"/>
<asp:ControlParameter ControlID="TextBox4" Name="TRANS_DATE" PropertyName="text" Type="DateTime" DefaultValue="" ConvertEmptyStringToNull="false"/>
<asp:ControlParameter ControlID="TextBox5" Name="TRANS_DATE2" PropertyName="text" Type="DateTime" DefaultValue="" ConvertEmptyStringToNull="false"/>
</FilterParameters>
</asp:SqlDataSource>
我想要的帮助是:有没有办法直接在select命令中运行我的过滤器作为WHERE语句?我的查询需要永远运行,我不知道filterexpressions生效的确切方式(即查询运行,然后过滤,还是从一开始就使用过滤器运行?)。此外,有人可以建议任何方式来优化查询?
感谢。
答案 0 :(得分:0)
而不是FilterParameters
使用SelectParameters
。以下是一个例子
SelectCommand="SELECT TOP 1000000 * FROM DWH.AIXW2S_T6946_TRANS_IMS
WHERE C6946_TRANS_NUM = @TRANS_NUM AND ...."
<selectparameters>
<asp:ControlParameter ControlID="TextBox2"
Name="TRANS_NUM" PropertyName="text" Type="String" DefaultValue=""
ConvertEmptyStringToNull="false"/>
...
</selectparameters>