1
在此測試應用程序中,我通過兩個ControlParameters進行過濾。正如你在第一個代碼塊中看到的那樣,這兩個參數的默認值都是%。這段代碼很好用。但是,在第二個代碼塊中,請注意消除了默認值。只要文本框的文本都是空白,第二個代碼塊就會工作。出於某種原因,當.NET評估過濾器表達式並在表達式中插入「」時,它似乎漏掉了,並且沒有我的結果被過濾。ASP.NET - SQLDataSource - FilterExpression - 空字符串問題
我可以通過爲每個ControlParameter設置defaultvalue =「」來驗證此行爲。
顯然我找到了一個解決方法,但我想知道爲什麼FilterExpression在提供空字符串時出現故障。
任何想法?
碼塊1:
<asp:SqlDataSource ID="Customer_Data" runat="server"
ConnectionString='<%$ ConnectionStrings:connectionString %>'
SelectCommand="SELECT Station, StoreFront, CustomerID as CustID FROM vStations"
ProviderName="System.Data.SqlClient"
FilterExpression="StoreFront LIKE '%{0}%' and CustID LIKE '{1}%'"
EnableCaching="True"
CacheDuration="60">
<FilterParameters>
<asp:ControlParameter ControlID="TextBox1" PropertyName="Text" DefaultValue="%" />
<asp:ControlParameter ControlID="TextBox2" PropertyName="Text" DefaultValue="%" />
</FilterParameters>
</asp:SqlDataSource>
碼塊2:
<asp:SqlDataSource ID="Customer_Data" runat="server"
ConnectionString='<%$ ConnectionStrings:connectionString %>'
SelectCommand="SELECT Station, StoreFront, CustomerID as CustID FROM vStations"
ProviderName="System.Data.SqlClient"
FilterExpression="StoreFront LIKE '%{0}%' and CustID LIKE '{1}%'"
EnableCaching="True"
CacheDuration="60">
<FilterParameters>
<asp:ControlParameter ControlID="TextBox1" PropertyName="Text" />
<asp:ControlParameter ControlID="TextBox2" PropertyName="Text" />
</FilterParameters>
</asp:SqlDataSource>
瑞恩,那答案是正確的!我遇到了同樣的問題,並在提供LIKE子句的參數上設置ConvertEmptyStringToNull =「false」來解決問題。 – 2011-03-02 20:14:21