c# - Establecer DateTime como un parámetro SqlDataSource para Gridview
asp.net (1)
EDITAR: aunque se aceptó una versión anterior de esta respuesta, parece que no entendí el tipo de parámetro utilizado. La web controla ParameterCollection
parece un poco horrible.
Yo sugeriría convertir los valores de fecha a un formato SQL (por mucho que me duela, francamente, las conversiones de cadena deberían evitarse tanto como sea posible). Por ejemplo:
SqlDataSource1.SelectParameters.Add("fromDate", DbType.DateTime,
fromDate.ToString("yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture));
SqlDataSource1.SelectParameters.Add("toDate", DbType.DateTime,
toDate.ToString("yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture));
(Cambie a yyyy-MM-dd
para tipos de solo fecha).
No he usado SqlDataSource
yo mismo, pero también parece que estás introduciendo los parámetros dos veces: una en el marcado y otra en el código. Dado que no tiene los valores en el marcado (incluidos los enlaces), es posible que desee eliminarlos de allí, pero podría estar equivocado en ese frente.
Si su consulta no está haciendo lo que esperaba, debe verificar los registros de su base de datos (o la herramienta que sea apropiada) para verificar qué consulta real se está ejecutando.
Hola, me gustaría mostrar ciertos datos con mi procedimiento almacenado durante los últimos 30 días. esto es lo que hice (archivo aspx.cs):
protected void Page_Load(object sender, EventArgs e)
{
DateTime toDate, fromDate;
toDate = DateTime.Now;
fromDate = toDate.Subtract(new TimeSpan(31, 0, 0, 0));
SqlDataSource1.SelectParameters.Add("fromDate", DbType.DateTime, fromDate.ToString());
SqlDataSource1.SelectParameters.Add("toDate", DbType.DateTime, toDate.ToString());
}
aquí está mi archivo aspx
<form id="form1" runat="server">
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" Width="232px" DataKeyNames="CustomerId" DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="CreationDate" HeaderText="CreationDate" SortExpression="CreationDate" />
</Columns>
</asp:GridView>
<br />
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:SSEnewConnectionString %>"
SelectCommand="procCustomer_SelectbyCreationDate" SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:Parameter DbType="DateTime" Name="fromDate" />
<asp:Parameter DbType="DateTime" Name="toDate" />
</SelectParameters>
</asp:SqlDataSource>
</form>
cuando pruebo esto, mi pantalla aparece en blanco (aparte de los elementos de la página maestra) y no hay errores. ¿algunas ideas?