如何在网格中按日期升序?

How can I ascending by Date in a grid?

我正在通过 asp.net 网络表单中的网格制作搜索列表。 我正在使用网络服务加载网格。现在我怎样才能提升请求日期?

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

这里我只是绑定了web服务,现在怎么把日期升序呢??

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();

使用linq

OrderBy方法
gvproposal.DataSource = webservice.EnquiryGetAllLcRequest().ToList().OrderBy(x=>x.REQUEST_DATE);
gvproposal.DataBind();

您可以使用 LINQ 对从 Web 服务调用收到的集合进行排序。 由于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();

我在我的机器上使用与您拥有的对象类似的对象尝试了上面的代码,它运行良好,正如您在下面的屏幕截图中看到的那样。

设置AllowSorting属性为真,添加OnSorting事件到gridview。然后在OnSorting事件中添加排序条件。您可以试试这个 reference 了解详情。

如果您想按提交日期升序排序。做,如下。

<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默认是升序的。欲了解更多信息,请访问。 GridView sorting: SortDirection always Ascending