【问题标题】:How can I ascending by Date in a grid?如何在网格中按日期升序?
【发布时间】:2016-04-17 22:58:56
【问题描述】:

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

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

【问题讨论】:

  • 你不能在 Sql 中这样做吗?
  • 也显示EnquiryGetAllLcRequest()的代码?
  • 没有 ..im 使用 oracle。
  • 我的意思是您可以在从哪里加载记录的查询中执行此操作。
  • webservice.EnquiryGetAllLcRequest() 是否返回数据表?

标签: asp.net date datetime webforms


【解决方案1】:

您可以使用 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 中的日期值无效,请使用下面的代码 sn-p

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

当可能存在无效日期字符串时,另一个代码 sn-p 如下。也试试这个。

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

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

【讨论】:

  • 谢谢你。你的回答对我有用。我只需要一些编辑工作。如果我将 e 删除到其他内容并删除 Date.Parse。它运行顺利。
  • 你能帮我提高日期吗? REQUEST_DATE 是字符串。所以我想作为日期升序。如果我写Date.Parse(e.REQUEST_DATE),那么它会给出The name 'Date' does not exist in the current context.
  • 能否在返回集合的Web服务中将字符串类型转换为DateTime?所以类 IS_LC_REQUEST 被定义,所以 REQUEST_DATE 是 DateTime 类型。
  • 不..我不能转换它。如果我写gvproposal.DataSource = arrayOfObjects.OrderBy(load => Convert.ToDateTime(load.REQUEST_DATE)).ToArray();它说字符串无效
  • 这应该可以使用转换。你看到什么错误?只需使用 DateTime 代替。我会改正的。
【解决方案2】:

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

<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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      使用linqOrderBy方法

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

      【讨论】:

      • 'INewwsEnquery.IS_LC_REQUEST[]' 不包含 'OrderBy' 的定义,并且没有扩展方法 'OrderBy' 接受类型为 'INewwsEnquery.IS_LC_REQUEST[]' 的第一个参数(你是缺少 using 指令或程序集引用?)。它显示错误:(
      • 'System.Array' 不包含'ToList' 的定义,并且找不到接受'System.Array' 类型的第一个参数的扩展方法'ToList'(您是否缺少 using 指令还是程序集参考?)
      • @S.Rusdana 在分配ToList() 属性之前尝试webservice.EnquiryGetAllLcRequest().AsEnumerable().ToList()
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-22
      • 1970-01-01
      相关资源
      最近更新 更多