asp.net - route - ¿Cómo puedo ascender por fecha en una grilla?
select asp-for asp-items (4)
Establezca la propiedad AllowSorting
en verdadero, agregue el evento OnSorting
a la vista grid. A continuación, agregue las condiciones para ordenar el evento OnSorting
. Puede probar esta referencia para más detalles.
Estoy haciendo una lista de búsqueda a través de una cuadrícula en el formulario web asp.net. Estoy usando el servicio web para cargar la grilla. Ahora, ¿cómo puedo subir la fecha de solicitud?
gvproposal.DataSource = webservice.EnquiryGetAllLcRequest();
gvproposal.DataBind();
aquí simplemente ato el servicio web ahora ¿cómo puedo subir la fecha?
public IS_LC_REQUEST[] EnquiryGetAllLcRequest();
este es el método de servicio web.
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; }
}
Actualizado:
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();
Puede usar LINQ para ordenar la colección que recibe de la llamada del servicio web. Como REQUEST_DATE
es del tipo de cadena, debe convertirla a la fecha usando Date.Parse
. Asegúrese de incluir este espacio de nombres en su código using System.Linq;
El código siguiente supone que la cadena REQUEST_DATE contiene valores de fecha válidos
var arrayOfObjects = webservice.EnquiryGetAllLcRequest();
gvproposal.DataSource = arrayOfObjects.OrderBy(e => DateTime.Parse(e.REQUEST_DATE)).ToArray();
gvproposal.DataBind();
Si espera valores de fecha no válidos el REQUEST_DATE, utilice el siguiente fragmento de código:
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();
Otro fragmento de código cuando las cadenas de fechas no válidas podrían estar allí es el siguiente. Prueba esto también
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();
Probé el código anterior en mi máquina usando un objeto como el que tienes y funcionó perfectamente, como puedes ver en la captura de pantalla belwo.
Utilice el método linq
de linq
gvproposal.DataSource = webservice.EnquiryGetAllLcRequest().ToList().OrderBy(x=>x.REQUEST_DATE);
gvproposal.DataBind();
Si desea ordenar orden ascendente en la fecha de presentación. Hazlo, como sigue.
<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>
Por defecto, gridview es de orden ascendente. Para mayor información por favor visite. Clasificación GridView: SortDirection siempre Ascending