Есть ли у .NET какой-либо встроенный метод, который позволяет фильтровать Gridviews? Я всегда программировал свои фильтры, используя источник данных, созданный динамической хранимой процедурой, которая принимает параметры. Но чтобы сохранить всегда строку фильтра, я должен поместить код для создания элементов управления, которые используются для фильтрации в трех разных местах, когда пейджинг разрешен (Page_load, Gridview_Databound, Page_SaveStateComplete). Похоже, что должен быть лучший способ , Если да, то как?Встроенная функция Gridview Filtering?
ответ
Только если вы выполняете работу. Проверьте
http://blog.evonet.com.au/post/Creating-a-Stylish-looking-Gridview-with-Filtering.aspx
Как было отмечено в комментариях, этот сайт не доступен.
Шаг 1:: берется непосредственно из записи в блоге Bartek Marnane в вы можете найти на web.archive.com следующие Создание Gridview и Datasource
Создание простой Gridview и Datasouce. В этом примере я использую SQL Datasource, но я рекомендую использовать ObjectDataSource для производственных сред. Установите ConnectionString в значение в файле web.config и ItemStyle-Width для каждого из ваших полей в зависимости от типа данных и количества свободного места.
<asp:GridView ID="Gridview1" runat="server" AutoGenerateColumns="False" AllowPaging="True"
AllowSorting="true" DataSourceID="dsGridview" Width="650px" PageSize="20"
CssClass="Gridview">
<Columns>
<asp:BoundField DataField="id" HeaderText="id" SortExpression="id"
ItemStyle-Width="50px" ItemStyle-HorizontalAlign="Center" />
<asp:BoundField DataField="FirstName" HeaderText="Sort" SortExpression="FirstName"
ItemStyle-Width="150px" />
<asp:BoundField DataField="LastName" HeaderText="Sort" SortExpression="LastName"
ItemStyle-Width="150px" />
<asp:BoundField DataField="Department" HeaderText="Sort" SortExpression="Department"
ItemStyle-Width="150px" />
<asp:BoundField DataField="Location" HeaderText="Sort" SortExpression="Location"
ItemStyle-Width="150px" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:EvonetConnectionString %>"
SelectCommand="SELECT * FROM [T_Employees]" />
Шаг 2: Создайте таблицу, используемую для GridView заголовков
Теперь мы создадим простую таблицу для хранения заголовков и фильтра выпадающего окна.
<table style="width: 650px" border="0" cellpadding="0" cellspacing="1"
class="GridviewTable">
<tr>
<td style="width: 50px;">
ID
</td>
<td style="width: 150px;">
First Name
</td>
<td style="width: 150px;">
Last Name
</td>
<td style="width: 150px;">
Department
</td>
<td style="width: 150px;">
Location
</td>
</tr>
<tr>
<td style="width: 50px;">
</td>
<td style="width: 150px;">
</td>
<td style="width: 150px;">
</td>
<td style="width: 150px;">
<asp:DropDownList ID="ddldepartment" DataSourceID="dsPopulateDepartment"
AutoPostBack="true" DataValueField="department" runat="server" Width="130px"
Font-Size="11px" AppendDataBoundItems="true">
<asp:ListItem Text="All" Value="%"></asp:ListItem>
</asp:DropDownList>
</td>
<td style="width: 150px;">
<asp:DropDownList ID="ddlLocation" DataSourceID="dsPopulateLocation"
AutoPostBack="true" DataValueField="location" runat="server" Width="130px"
Font-Size="11px" AppendDataBoundItems="true">
<asp:ListItem Text="All" Value="%"></asp:ListItem>
</asp:DropDownList>
</td>
</tr>
<tr>
<td colspan="5">
<asp:GridView ID="Gridview1" runat="server" AutoGenerateColumns="False"
AllowPaging="True" AllowSorting="true" DataSourceID="dsGridview"
Width="650px" PageSize="10" CssClass="Gridview">
<Columns>
<asp:BoundField DataField="id" HeaderText="Sort" SortExpression="id"
ItemStyle-Width="50px" ItemStyle-HorizontalAlign="Center" />
<asp:BoundField DataField="FirstName" HeaderText="Sort"
SortExpression="FirstName" ItemStyle-Width="150px" />
<asp:BoundField DataField="LastName" HeaderText="Sort"
SortExpression="LastName" ItemStyle-Width="150px" />
<asp:BoundField DataField="Department" HeaderText="Sort"
SortExpression="Department" ItemStyle-Width="150px" />
<asp:BoundField DataField="Location" HeaderText="Sort"
SortExpression="Location" ItemStyle-Width="150px" />
</Columns>
</asp:GridView>
</td>
</tr>
</table>
Для последней ячейки, установите значение Colspan Td числу полей в GridView. Переместите Gridview в последнюю ячейку.
Шаг 3: Создание стилей
Стилевая, что я использую имеет следующие пункты:
.GridviewDiv {font-size: 62.5%; font-family: 'Lucida Grande',
'Lucida Sans Unicode', Verdana, Arial, Helevetica, sans-serif; color: #303933;}
Table.Gridview{border:solid 1px #df5015;}
.GridviewTable{border:none}
.GridviewTable td{margin-top:0;padding: 0; vertical-align:middle }
.GridviewTable tr{color: White; background-color: #df5015; height: 30px; text-align:center}
.Gridview th{color:#FFFFFF;border-right-color:#abb079;border-bottom-color:#abb079;
padding:0.5em 0.5em 0.5em 0.5em;text-align:center}
.Gridview td{border-bottom-color:#f0f2da;border-right-color:#f0f2da;
padding:0.5em 0.5em 0.5em 0.5em;}
.Gridview tr{color: Black; background-color: White; text-align:left}
:link,:visited { color: #DF4F13; text-decoration:none }
Вы должны быть в состоянии просто скопировать это в ваш css-файл, не затрагивая ваши текущие таблицы стилей, хотя будьте осторожны, если вы уже установили: ссылку и: посетили на своем сайте.
Шаг 4: Добавьте фильтрацию выпадающие окна и источники данных
В таблице, созданной на шаге 2, добавьте DropDownList к каждой из ячеек во втором ряду, которые содержат поле, которое вы хотите фильтровать , Убедитесь, что выпадающий список eac меньше, чем ячейка, в которую он входит, иначе границы вашей таблицы не будут выровнены. Настройте источник данных, который получает каждое возможное значение этого поля в вашей таблице.Я делаю это, запустив DISTINCT для всех значений в таблице я фильтровальные:
<asp:DropDownList ID="ddldepartment" DataSourceID="dsPopulateDepartment"
AutoPostBack="true" DataValueField="department" runat="server" Width="130px" Font-Size="11px"
AppendDataBoundItems="true">
<asp:ListItem Text="All" Value="%"></asp:ListItem>
</asp:DropDownList>
<asp:SqlDataSource ID="dsPopulateDepartment" runat="server"
ConnectionString="<%$ ConnectionStrings:EvonetConnectionString %>" SelectCommand="SELECT
DISTINCT Department from [T_Employees]"></asp:SqlDataSource>
Создать столько DropDownLists как поля, которые вы хотели бы фильтровать.
Несколько вещей отметить:
Установите AppendDataBoundItems = True свойство для DropDownList, как он будет заполнен во время выполнения. Установите свойство AutoPostBack = True, чтобы Gridview обновлялся при изменении выбора. Убедитесь, что для вашего списка ListItem для «Все» значение «%» указано в качестве значения. Ваше выражение фильтра будет SELECT * FROM [TABLE NAME] Где [FieldName], например '{0}%', где {0} - это значение в раскрывающемся списке. Если ваш раскрывающийся список установлен для всех, тогда строка запроса будет SELECT * FROM [TABLE NAME], где [FieldName], например, «%%», которая в SQL возвращает все значения.
Шаг 5: Добавьте фильтрацию Datasource вашего GridView в
Добавить FilterExpress так Datasource ваш GridView, такие как
[Field1] как '{0}%' и [Field2] как «{1 }% 'и [Field3], например' {2}% 'и [Field4], например' {3}% 'и ... и т. д.
Ваши поля затем необходимо добавить в раздел FilterParameters в том же порядке, что и ваш фильтр выражение. Раздел FilterParameters ссылается на SelectedValue ваших dropdownlists.
<asp:SqlDataSource ID="dsGridview" runat="server"
ConnectionString="<%$ ConnectionStrings:EvonetConnectionString %>"
SelectCommand="SELECT * FROM [T_Employees]" FilterExpression="Department like '{0}%'
and Location like '{1}%'">
<FilterParameters>
<asp:ControlParameter Name="Department" ControlID="ddldepartment"
PropertyName="SelectedValue" />
<asp:ControlParameter Name="Location" ControlID="ddllocation"
PropertyName="SelectedValue" />
</FilterParameters>
</asp:SqlDataSource>
Вот так!
- 1. IE 8 Встроенная функция экспорта в Excel из ASP.NET GridView
- 2. make sort - Встроенная функция
- 3. путаются макс() встроенная функция
- 4. переосмысление питон встроенная функция
- 5. рекурсивная встроенная функция
- 6. Встроенная функция питона хэш()
- 7. Встроенная функция (когда вводить)?
- 8. Встроенная функция помощи
- 9. Встроенная функция проверки подлинности
- 10. postgresql встроенная функция return
- 11. Встроенная функция IIF
- 12. Mutex и встроенная функция
- 13. Встроенная функция не определена
- 14. встроенная функция C++?
- 15. Python встроенная функция
- 16. Что делает встроенная функция?
- 17. Лучшая встроенная функция javascript?
- 18. Встроенная функция через макрос
- 19. встроенная функция в gWidgets
- 20. Встроенная функция компиляции
- 21. Excel встроенная функция
- 22. redefining встроенная функция
- 23. Что такое встроенная функция?
- 24. встроенная функция в c
- 25. Как функция monkeypatch встроенная функция datetime.datetime.now?
- 26. Impala встроенная функция: UNIX_TIMESTAMP функция не достаточно
- 27. Рекуррентная встроенная функция или функция внутри функции?
- 28. PhpUnit Mock a встроенная функция
- 29. Встроенная функция суммы в python
- 30. Встроенная функция как метод класса
Прохладный. Мне нравится сайт. Благодаря! +1 – Eric
Ссылка в ответе мертва - * «Этот сайт не может быть достигнут/DNS-сервер blog.evonet.com.au DNS не найден» * – Pang
Я нашел запись в блоге на web.archive.org и обновил свой ответ, вставив основной текст из Bartek Marnane –