shms_rony Ответов: 1

Справка: фильтр gridview с помощью filterfilterexpression


Я хотел отфильтровать Gridview с помощью нескольких выпадающих списков
Поэтому я использовал фильтр Expression

Я хочу добавить элемент в DropList под названием " Blank ", чтобы прятать строки, которые имеют значения = 0 и отображают только строки, которые имеют значения (для этого столбца )

и пункт называется "Все" для просмотра Все строки (для столбца )

(Например, Фильтр Excel )

Вот мой код

<asp:DropDownList ID="Ddl_LastBlnc" runat="server" AutoPostBack="True" DataSourceID="LastBlnc" DataTextField="LastBalance" DataValueField="LastBalance" AppendDataBoundItems="True">
<asp:ListItem Selected="True" Value="" Text="All"></asp:ListItem>

<asp:SqlDataSource ID="LastBlnc" runat="server" ConnectionString="<%$ ConnectionStrings:HHCon %>" 

SelectCommand="SELECT DISTINCT LastBalance From Balance" OnSelecting="LastBlnc_Selecting"></asp:SqlDataSource>


<asp:DropDownList ID="Ddl_CurntBlnc" runat="server" AutoPostBack="True" DataSourceID="CrntBlnc" DataTextField="CurrentBalance" DataValueField="CurrentBalance" AppendDataBoundItems="True">
 <asp:ListItem Selected="True" Value="" Text="All"></asp:ListItem>
</asp:DropDownList>

<asp:SqlDataSource ID="CrntBlnc" runat="server" ConnectionString="<%$ ConnectionStrings:HHCon %>" 

SelectCommand="SELECT DISTINCT CurrentBalance From Balance" OnSelecting="CrntBlnc_Selecting"></asp:SqlDataSource>


// Data source Of GridView 

 <asp:SqlDataSource ID="SqlDataAll" runat="server" ConnectionString="<%$ ConnectionStrings:HHCon %>" 
 SelectCommand="SELECT [Code], [CurrentBalance], [LastBalance] From Balance  " 
 FilterExpression="[LastBalance]={0} AND [CurrentBalance] = {1}  ">
 <FilterParameters>
            <asp:ControlParameter ControlID="Ddl_LastBlnc" Name="LastBalance" 
                    PropertyName="SelectedValue" Type="String" />
            <asp:ControlParameter ControlID="Ddl_CurntBlnc" Name="CurrentBalance" 
                    PropertyName="SelectedValue" Type="String" />
            </FilterParameters>
         </asp:SqlDataSource>


Что я уже пробовал:

Я попытался добавить этот элемент как" все " в Droplist
Но я не знаю выражения фильтра, как это будет !!

Vincent Maverick Durano

Я не уверен, правильно ли я вас понял, вы пытаетесь отобразить все элементы в сетке, если выбранное значение "все"?

shms_rony

Если в выпадающем списке столбца, выбранного на "все", и в выпадающем списке второго столбца выбрано значение 5 < Gridview отобразит все строки столбца 1, которые имеют значения 5 столбца 2

Для "пустого", если в выпадающем списке столбца выбрано значение "пусто", отобразите в Gridview все данные, которые не равны 0

shms_rony

Как Excel Filter Gridview

Vincent Maverick Durano

и эти выпадающие списки находятся внутри сетки?

shms_rony

Нет, я пробовал этот способ "внутри заголовка gridview ", но я не могу этого сделать :( я пробовал 3 дня, но это не удается
Затем я поместил Dropdownlist из gridview в <td>

Vincent Maverick Durano

пожалуйста, попробуйте предложенное мной решение.

1 Ответов

Рейтинг:
2

Vincent Maverick Durano

Вы пробовали присвоить значение 0 вашему параметру "все"? Например:

<asp:listitem selected="True" value="0" text="All"></asp:listitem>


Когда вы выберете "все", значение 0 будет передано вашему FilterExpression вместе со значением, выбранным из второго выпадающего списка. Поэтому, если вы выберете "все" для первого выпадающего списка и выберете "5" для второго выпадающего списка, критерии фильтра приведут к этому:

"SELECT [Code], [CurrentBalance], [LastBalance] From Balance WHERE [LastBalance]= 0 AND [CurrentBalance] = 5"


Если этот запрос что-то возвращает, то это будет отражено в вашей сетке.


shms_rony

да, я пробовал этот способ ,но у меня есть значения записей =0 , поэтому, если я это сделаю, Grdiview отобразит записи thr, которые имеют значения =0 и 5
Но я не хочу отображать данные со значениями =0 !!! :/

Vincent Maverick Durano

попробуйте изменить выражение фильтра на это:
FilterExpression="([LastBalance] < & gt; 0 и [LastBalance]= {0}) и [CurrentBalance] = {1}"

Правка: забудьте об этом. фильтр выше на самом деле ничего не возвращает, когда вы выбираете "все". Идея заключается в том, что ваше значение" все " должно иметь соответствующее числовое значение в вашей базе данных, чтобы вы могли легко отфильтровать его.Но так как у вас его нет, то вам может понадобиться использовать другой sqldatasource с отдельным выражением FilterExpression, когда вы решите выбрать опцию "Все" из выпадающего списка.