Tengo una situación realmente extraña. He creado 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.gridview vacío aunque el sqldatasource tiene valores
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 "elegante" en el procedimiento, lo he hecho más de una vez sin ningún problema. He intentado otros trabajos wich procedimiento almacenado en nuestra env producción y todavía tengo el mismo gridview emty
Este es 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 subyacente
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 te puedes imaginar lo agradecido que estoy :) – SimSimY
+1 ¡Me salvaste un par de horas! :) – meda
Gracias. 6 años después, me ayudaste :-) No estoy seguro de por qué MS hace eso por defecto para crear desorden. –