0
我目前在使用文本框中的過濾器的ASP.NET網格視圖中運行查詢。我當前的代碼如下所示:從文本框中使用filterexpressions運行SQL查詢
<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生效的確切方式(即查詢運行,然後過濾,還是從一開始就運行過濾器?)。另外,有人可以建議任何方式來優化查詢?
謝謝。
不是你的確切問題的答案,但這裏有一個提示 - 做所有的數據庫查詢服務器端,使用代碼隱藏或類中的代碼等。不要使用這些愚蠢的ASP.NET過濾器可以在ASPX頁面上使用。他們導致了一個糟糕的,耦合的設計。我必須在過去使用它們的代碼上工作,而且他們真的很痛苦。沒有它們你會發現它更容易。 –
我以前從來沒有做過這樣的事情,我不是一個IT人。我不認爲我能夠弄清楚如何在原始代碼中執行此操作。 – mc91
啊,這是一個恥辱,我知道這並不是一件微不足道的事情。好吧,我承認我不知道你的問題的答案,但我只是想我會拋出小費以備將來參考:) –