J'ai la situation vraiment bizarre. J'ai créé une nouvelle page ASPX, et sans utiliser aucun objet logique personnalisé (tout ce qui a été créé avec les assistants Visual Studios) a essayé de créer une vue de grille depuis sqldatasource.gridview vide bien que le sqldatasource a des valeurs
Les données proviennent d'une procédure stockée, avec un seul paramètre qui a une valeur par défaut. lorsque je rafraîchis le schéma ou que je clique sur "tester la requête", je vois que les lignes de résultats et les champs GridViews sont créés de manière cor- recte. Mais quand je cours la page il n'y a aucune vue de grille (c'est simplement vide - quand j'ajoute EmptyDataTemplate il est montré). J'ai ajouté la fonction personnalisée (vide) et l'événement DataBind, DataBinded et RowCreted, et seuls les événements databind et datavound sont lancés (bien que, comme je l'ai écrit, la procédure stockée avec son paramètre par défaut return rows et .net peut les lire en mode design
Il n'y a rien de "fantaisie" dans la procédure, je l'ai fait plus d'une fois sans problème. Je l'ai essayé une autre procédure stockée Wich travaux dans notre production et env encore eu la même emty gridview
Voici le code
<%@ 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>
et codebehind
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
}
}
}
Vous ne pouvez pas imaginer comment je suis reconnaissant :) – SimSimY
+1 Vous venez de me sauver quelques heures! :) – meda
Merci. 6 ans plus tard, vous m'avez aidé :-) Je ne sais pas pourquoi MS fait cette chose par défaut pour créer le désordre. –