2016-01-13 2 views
4

enter image description here Я делаю список поиска через сетку в виде веб-формы asp.net. Я использую веб-сервис для загрузки сетки. Теперь, как я могу увеличить дату запроса?Как я могу по возрастанию по дате в сетке?

gvproposal.DataSource = webservice.EnquiryGetAllLcRequest(); 
gvproposal.DataBind(); 

здесь Я просто привязываю веб-сервис, как я могу восходить по дате ??

public IS_LC_REQUEST[] EnquiryGetAllLcRequest(); 

это способ веб-сервиса.

public class IS_LC_REQUEST : CModelBaseOfIS_LC_REQUEST 
    { 
     public IS_LC_REQUEST(); 
     public string BENEFICIARY_ADDRESS { get; set; } 
     public string BENEFICIARY_NAME { get; set; } 
     public string BRANCH_ID { get; set; } 
     public string PORT_OF_SHIPMENT { get; set; } 
     public string REQUEST_DATE { get; set; } 
     public string REQUEST_ID { get; set; } 

    } 

Обновлено:

var arrayOfObjects = IntBankProposal.EnquiryGetAllLcRequest(); 
var dt = DateTime.Now; 
gvproposal.DataSource = arrayOfObjects.OrderBy(load => { if (DateTime.TryParse(load.REQUEST_DATE, out dt)) { return dt; } else { return DateTime.Now.AddYears(-100); } }).ToArray(); 
gvproposal.DataBind(); 
+1

Вы не можете сделать это в Sql? – Mairaj

+1

Также покажите код 'EnquiryGetAllLcRequest()'? – Mairaj

+0

нет ..im используя оракул. –

ответ

2

Вы можете использовать LINQ для сортировки коллекции, вы получите от вызова веб-службы. С REQUEST_DATE имеет строковый тип, его необходимо преобразовать на сегодняшний день, используя Date.Parse. Убедитесь, что вы включили это пространство имен в вашем коде using System.Linq;

ниже код предполагает, что REQUEST_DATE строка содержит действительные значения даты

var arrayOfObjects = webservice.EnquiryGetAllLcRequest(); 
gvproposal.DataSource = arrayOfObjects.OrderBy(e => DateTime.Parse(e.REQUEST_DATE)).ToArray(); 
gvproposal.DataBind(); 

Если вы ожидаете недопустимые значения даты в REQUEST_DATE, а затем использовать фрагмент кода ниже

var arrayOfObjects = webservice.EnquiryGetAllLcRequest(); 
var dt = DateTime.MinValue; 
DateTime dtNull = DateTime.Now.AddYears(-100); 
gvproposal.DataSource = arrayOfObjects.OrderBy(e => { dt = DateTime.MinValue; if(DateTime.TryParse(e.REQUEST_DATE, out dt)) { return dt;} else { return dtNull;}}).ToArray(); 
gvproposal.DataBind(); 

Другой фрагмент кода, когда некорректная строка даты может быть там, как показано ниже. Попробуйте это также.

var arrayOfObjects = webservice.EnquiryGetAllLcRequest(); 
var dt = DateTime.MinValue; 
gvproposal.DataSource = arrayOfObjects.OrderBy(e => { dt = DateTime.MinValue; DateTime.TryParse(e.REQUEST_DATE, out dt); return dt;}).ToArray(); 
gvproposal.DataBind(); 

Я попытался выше код на моей машине, используя объект, как тот, у вас есть, и она работала отлично, как вы можете видеть на экране выстрел belwo.

Sort on Object's Date Property for Array of Objects using LINQ

+0

Спасибо. Ваш ответ для меня. I просто нужно отредактировать для работы. Если я удалю e в другое и удаляю Date.Parse, он работает плавно. –

+0

Не могли бы вы помочь мне восходить по дате. 'REQUEST_DATE' - это строка. Поэтому я хочу восходить по дате. И если я пишу 'Date.Parse (e.REQUEST_DATE)', то он дает 'Имя 'Date' не существует в текущем контексте.' –

+0

Можете ли вы преобразовать тип строки в DateTime в веб-службу, которая возвращает коллекцию ? Таким образом, класс 'IS_LC_REQUEST' определяется так, что' REQUEST_DATE' имеет тип DateTime. – Sunil

1

Используйте OrderBy метод linq

gvproposal.DataSource = webservice.EnquiryGetAllLcRequest().ToList().OrderBy(x=>x.REQUEST_DATE); 
gvproposal.DataBind(); 
+0

'INewwsEnquery.IS_LC_REQUEST []' не содержит определения для «OrderBy», и не может быть найден метод расширения «OrderBy», принимающий первый аргумент типа «INewwsEnquery.IS_LC_REQUEST []» (вам не хватает директивы использования или сборки Справка?). Он показывает ошибку :( –

+0

См. Обновленный ответ. – Mairaj

+0

«System.Array» не содержит определения для «ToList» и не используется метод расширения «ToList», принимающий первый аргумент типа «System.Array» (вы отсутствуете директива using или ссылка на сборку?) –

1

Установить AllowSorting свойство верно, добавить OnSorting событие в GridView. Затем добавьте условия для сортировки по событию OnSorting. Вы можете попробовать это reference для деталей.

1

Если вы хотите отсортировать по возрастанию по дате подачи. Делайте, как следует.

<asp:GridView ID="grdHeader" AllowSorting="true" AllowPaging="false" 
    AutoGenerateColumns="false" Width="780" runat="server" OnSorting="grdHeader_OnSorting" EnableViewState="true"> 
    <Columns> 
     <asp:BoundField DataField="REQUEST_DATE" HeaderText="Date" SortExpression="REQUEST_DATE" /> 

    </Columns> 
</asp:GridView> 

По умолчанию gridview is по возрастанию. Для получения дополнительной информации, пожалуйста, посетите. GridView sorting: SortDirection always Ascending

Смежные вопросы