[C#] Afficher une gridview sans passer par une page ASPX

Hello la zone,

J’aimerai votre aide pour afficher une gridview sans passer par l’utilisation d’une page aspx dans le projet. La raison est que je veux développer une Webpart type Tableau pour une Webpage de SharePoint. J’ai pensé qu’une Gridview serait le plus approprié sachant qu’on peut effectuer des tries des données via un clique sur l’entete de colonne.

Voici ce que j’ai fait, mais qui malheureusement ne m’affiche pas ma gridview.

[code]public class MonTableau : WebPart
{
#region Properties
private string _ownerName;
private string _accountName;
private ArrayList _opportunities;
private GridView _gridOpportunities;
#endregion

	#region RenderWebPart
	protected override void RenderWebPart(HtmlTextWriter output)
	{
		string accountId = Page.Request.QueryString["accountId"];
		try
		{
			_opportunities = new ArrayList(); 
			....
			// Récupérer la liste des opportunités liées à l'identifiant
			_opportunities = functions.GetOpportunityItems(accountId);

			// Remplir la gridview de la liste reçue
			_gridOpportunities.DataSource = _opportunities;
			_gridOpportunities.DataBind();
			_gridOpportunities.Visible = true;
		}
		catch (Exception e)
		{
			...
		}
	}
	#endregion
}[/code]

Regarde du côté de la méthode RenderControl. Moi je m’en sers pour exporter le contenu d’une gridview dans un document excell. Bon il prend en paramètre un HtmlTextWriter donc à voir comment tu peux intégrer ça dans ton appli.

Ok, je regarde ça.

J’vais ptete poser une question conne, due à ma totale méconnaissance des webparts, mais euh, tu l’a bien ajoutée à la liste des controles de la page, ta gridview ?

Tu veux dire la mettre dans la page aspx ? non, étant donné que je développement des composant web qui seront utilisés sur une webpage SharePoint. Si, ca ne te dit toujours rien, il s’agit de développer de petit module web pour les intégrer dans une page web à la manière d’un éditeur de mission comme ArmA ^^. Enfin, j’espère que tu vois le truc.

Je ne connais pas encore toutes les possibilités qu’offre SharePoint donc je ne sais nullement s’il est tout à fait possible de lui mettre un webpart qui soit une page aspx. Or la Webpage est en asp.net.

Ma requete était de savoir et comment peut on afficher une gridview qui soit seulement définit dans le code C# et seulement dessus. Ca inclut aussi bien la définition du nombre de colonnes, des nom d’entetes de colonnes et le link entre la gridview et la datasource.

PS : je récupère mes données via un Webservice SharePoint. Donc, y a pas de requete du style SELECT FROM Machin mais une requete bien particulière à CRM.

Bah justement, si j’ai bien compris le principe, c’est qu’il n’a pas de page B)

EDIT: Grilled ^^

Bon, toujours en gardant en tete le fait que j’y connaisse rien en webparts, mais qu’en aspx.net, j’ai déjà un peu roulé ma bosse, j’imagine qu’une WebPart, ca hérite des propriétés de WebControl à un moment ou un autre. D’ailleurs la doc me le confirme (http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.webparts.webpart.aspx). Ok, j’ai dit page, j’aurais du dire WebPart. Donc, la question, c’est “tu l’a bien ajoutée à la liste des controles de la webpart, ta gridview ?”

A noter que si tu n’a pas de designer pour la webpart, tu dois l’ajouter dans CreateChildControls() sinon ca merdera sensiblement.

Que veux tu dire par là ? Désolé pour la petite bête ^^. Tu parles bien de la toolbox sous Visual Studio 2005 ? En attendant, /me vais me renseigner sur le CreateChildControls().

Edit : c’est nickel, c’est bien CreateChildControls qui me permet de créer mes controles dans ma WebPart (tester avec une Textbox). Par contre, je ne sais pas comment définir le nombre de colonnes, les noms de colonnes de la Gridview. J’ai tenté « gridV.RowHeaderColumn.Insert(0, « Column A »); » mais SharePoint plante.

Comme ça paf de mémoire je dirais que c’est la collection columns que tu dois compléter. Je suis qu’un grand coup de google donnera plus d’infos que moi ^^