Как отсортировать использование GridView и ObjectDataSource?

Я добавил этот сценарий в конце моего Podfile и снова выполнил pod install. Так что я мог нормально построить свой проект.

post_install do |installer|
    installer.pods_project.build_configurations.each do |config|
        config.build_settings.delete('CODE_SIGNING_ALLOWED')
        config.build_settings.delete('CODE_SIGNING_REQUIRED')
    end
end
15
задан 5377037 25 July 2017 в 20:13
поделиться

2 ответа

Установите для свойства gridView.AllowSorting значение true. Отсюда сетка должна позволять вам автоматически сортировать данные при обратной передаче, если вы используете объект, реализующий IBindingList. Однако, поскольку это, скорее всего, не так, вам следует воспользоваться советом TheTXI выше и обработать событие сортировки самостоятельно. Либо подключите событие GridView.Sorting в выделенном коде, например:

gridView.Sorting += new GridViewSortEventHandler(gridView_Sorting); 

Обработайте сортировку внутри метода gridView_Sorting, который должен выглядеть следующим образом:

private void gridView_Sorting(object sender, GridViewSortEventArgs e)
{
     //Sorting logic here
}

Кроме того, вы можете привязать событие к самой странице, используя OnSort = "gridView_Sorting "прикреплен к элементу управления.

Помните, поскольку вы устанавливаете gridView.EnableSortingAndPagingCallbacks на false, это не будет немедленно запускаться, когда пользователь попытается выполнить сортировку, вместо этого он будет ждать обратной передачи на сервер.

Я надеюсь это помогает!

РЕДАКТИРОВАТЬ:

Поскольку предпочтительным посредником является ObjectDataSource, вот краткое объяснение того, как подключать его и для сортировки. Используйте на своей странице следующее (полный пример можно найти здесь в MSDN, внизу):

<asp:GridView ID="TestGridView" runat="server" DataSourceID="ObjectDataSourceTest"
        AllowSorting="True">
    </asp:GridView>
    <asp:ObjectDataSource ID="ObjectDataSourceTest" runat="server" 
        SelectMethod="SelectMethod" 
        TypeName="Samples.AspNet.CS.SortingData" 
        SortParameterName="sortExpression">
    </asp:ObjectDataSource>

Вместо фактического использования события gridView.Sorting вы перейдете к ObjectDataSource позаботится о сортировке. После запуска сортировки он должен вызвать метод, найденный в SelectMethod в вашем коде. Затем внутри SelectMethod вы должны обработать перестройку вашего объекта GridView, который будет выглядеть так:

public void SelectMethod(string sortExpression)
{
     //Rebuild gridView table if necessary, same method used in 
     //on a postback, and retrieve data from the database. Once
     //completed sort the data with:

     gridView.Sort(sortExpression, SortDirection.(Ascending or Descending))
}
19
ответ дан 1 December 2019 в 02:29
поделиться

Я использую Linq2Sql и ObjectDataSource, и он очень хорошо выполняет разбиение по страницам и сортировку.

Я реализовал класс, который будет использоваться как ObjectDataSource. У него есть методы Select и Count, вызывающие мой бизнес-уровень, который использует запросы Linq2SQL для извлечения данных из БД. Методы select автоматически получают индекс первого элемента, размер страницы и выражение сортировки в качестве параметров.

public List<EntityClass> Select(int startIndex, int pageSize, string sortBy) {}
public int Count() {}

В ASPX источник данных настроен следующим образом:

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"  
     SelectMethod="Select" EnablePaging="true"
     StartRowIndexParameterName="startIndex" 
     MaximumRowsParameterName="pageSize"
     SortParameterName="sortBy" SelectCountMethod="Count" >   
</asp:ObjectDataSource>

Методы Select и Count используют запросы Linq для извлечения данных из базы данных. Я использую методы Skip (), Take () и Orderby () . Чтобы OrderBy принимал строковое выражение сортировки, я использую DynamicLinq Кодировать особо нечего, привязка данных, разбиение на страницы и сортировка работают автоматически.

7
ответ дан 1 December 2019 в 02:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: