c# asp.net gridview sqldatasource

c# - vista de cuadrícula vacía aunque el sqldatasource tiene valores



asp.net gridview (2)

De sus comentarios recientes parece que SQL Profiler no muestra ninguna actividad cuando SelectCommand se emite desde SqlDataSource . Esto podría deberse al hecho de que ConvertEmptyStringToNull se establece en true de forma predeterminada en los parámetros contenidos en la colección SelectParameters . Además, de forma predeterminada, CancelSelectOnNullParameter en SqlDataSource se establece en verdadero. Esto significa que su parámetro ''val2'' probablemente esté pasando un valor NULL, que a su vez cancela la operación de recuperación de datos. Es por eso que no ve ninguna actividad dentro de SQL Profiler.

Intente configurar CancelSelectOnNullParameter en falso en SqlDataSource .

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:myConnectionString %>" SelectCommand="myStoredProcedure" SelectCommandType="StoredProcedure" CancelSelectOnNullParameter="False"> </asp:SqlDataSource>

Tengo una situación realmente extraña. Creé una nueva página aspx y, sin utilizar CUALQUIER objeto lógico personalizado (todo lo creado con asistentes de estudios visuales) intenté crear una vista de cuadrícula desde sqldatasource.

Los datos provienen del procedimiento almacenado, con un solo parámetro que tiene un valor predeterminado. cuando actualizo el esquema o hago clic en "consulta de prueba", veo que las filas de resultados y los campos de GridViews se crean correctamente. Pero cuando ejecuto la página no hay vista de cuadrícula (simplemente está vacía, cuando agrego EmptyDataTemplate se muestra). Agregué funciones personalizadas (vacías) y eventos DataBind, DataBinded y RowCreted, y solo se activan los eventos databind y datavound (aunque, como escribí, el procedimiento almacenado con su parámetro predeterminado devuelve filas y .net puede leerlos en modo de diseño )

No hay nada "sofisticado" en el procedimiento, lo he hecho más de una vez sin ningún problema. He intentado con otro procedimiento almacenado que funciona en nuestro entorno de producción y todavía tengo el mismo gridview de emty

aquí está el código

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TEST.aspx.cs" Inherits="site.TEST" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> <asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1" AllowSorting="True" OnDataBinding="GridView1_DataBinding" OnDataBound="GridView1_DataBound" OnRowCreated="GridView1_RowCreated"> <EmptyDataTemplate> No Data Available </EmptyDataTemplate> </asp:GridView> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:myConnectionString %>" SelectCommand="myStoredProcedure" SelectCommandType="StoredProcedure"> <SelectParameters> <asp:Parameter DefaultValue="val1" Name="par1" Type="String" /> <asp:Parameter Name="val2" Type="Int32" /> </SelectParameters> </asp:SqlDataSource> </div> </form> </body> </html>

y el código detrás

using System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; namespace site { public partial class TEST : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) {//brake here } protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e) {//brake here } protected void GridView1_DataBinding(object sender, EventArgs e) {//brake here } protected void GridView1_DataBound(object sender, EventArgs e) {//brake here } } }


No he visto la asignación de parámetros (val1, val2), por lo que el inicio predeterminado asignará valores predeterminados para cadena e int y pasará al servidor SQL.

Pruebe SQL Server Profiler para ver si ejecuta la selección con parámetros REALES