2017-03-14 34 views
0

我想用5個不同的參數過濾我的gridview。我可以讓它正常工作,但是當我將「全部」添加到下拉列表中時會出現問題。如果我在下拉列表中選擇全部,我無法再過濾。它會顯示一切結果,但過濾不起作用。我的過濾器表達式或控制參數中是否有錯誤?如何過濾5個參數,包括使用過濾器表達式的下拉列表?

這是我目前的下拉列表:

<asp:DropDownList ID="DDL1" runat="server" AutoPostBack="true" 
DataTextField="Tab" DataValueField="Tab" AppendDataBoundItems="true" > 
<asp:ListItem Value="">All</asp:ListItem> 
<asp:ListItem Value="Tr">Tr</asp:ListItem> 
<asp:ListItem Value="Out">Out</asp:ListItem> 
<asp:ListItem Value="In">In</asp:ListItem> 
</asp:DropDownList> 

這是我對過濾來源:

<asp:SqlDataSource 
SelectCommand="SELECT * FROM Log ORDER BY TimeStamp DESC" 
FilterExpression="Com LIKE '%{0}%' AND Usr LIKE '%{1}%' 
AND Tab = '{2}' AND TimeStamp >= '#{3}#' AND TimeStamp <= '#{4}#'"> 
<FilterParameters> 
<asp:ControlParameter ControlID="TB1" Name="Com" PropertyName="Text" Type="String" 
ConvertEmptyStringToNull="false" /> 

<asp:ControlParameter ControlID="TB2" Name="Usr" PropertyName="Text" Type="String" 
ConvertEmptyStringToNull="false" /> 

<asp:ControlParameter Name="Tab" ControlID="DDL1" 
PropertyName="SelectedValue" ConvertEmptyStringToNull="true"/> 

<asp:ControlParameter Name="Date" ControlID="DateFrom" Type="DateTime" PropertyName="Text" 
ConvertEmptyStringToNull="false" /> 

<asp:ControlParameter Name="Date" ControlID="DateTo" Type="DateTime" 
PropertyName="Text" ConvertEmptyStringToNull="false" /> 
    </FilterParameters> </asp:SqlDataSource> 
+0

所有顯示我的東西,當你選擇你的SelectedValue是空的ALL和onvertEmptyStringToNull =「true」正在轉換爲NULL。當你有NULL時,我不認爲它會作爲一個字符串'NULL'工作,而是會搜索'NULL'值但不爲NULL的記錄。 – Sailor

+0

我試過讓它錯誤,它也沒有工作。仍然試圖找出我需要修改我的代碼 –

回答

1

更新您的ALL選項的下拉列表中

<asp:ListItem Value="-1">All</asp:ListItem> 

更新值您的控制參數設置爲默認值,並刪除ConvertEmptyStringToNull = false

<asp:ControlParameter Name="Tab" ControlID="DDL1" 
PropertyName="SelectedValue" Type="String" DefaultValue="-1"/> 

更新標籤的過濾器表達式

FilterExpression="Com LIKE '%{0}%' AND Usr LIKE '%{1}%' 
AND (Tab = '{2}' or '{2}' = '-1') AND TimeStamp >= '#{3}#' AND TimeStamp <= '#{4}#'"> 
+0

這沒有辦法。謝謝 –