[.NET] User Control

Bonjour la zone !
Bon voila j’aurais besoin d’une main secourable. Moi mon truc c’est le java, le .NET et tout ce qui est microsoft j’y connais un peu que dale. J’ai lu un tuto sur le C#, ca va, c’est pas trop compliqué seulement voila, j’ai un petit truc a réaliser et rapidement (ha la joie des projets à la bourres :P); et je nage un peux au sujet des aspx et aspx.cs.

J’ai compris que mon code (ma classe s’appelant SelectLink) doit se trouver dans un fichier aspx.cs et quae le design se fera dans le fichier aspx, que je devrais écrire un truc du style :
<%@ Control Language=« C# » AutoEventWireup=« true » CodeFile=« SelectLink.ascx.cs » Inherits=« SelectLink » %>

Bon c’est cool mais à part ca c’est le flou total.

Je m’explique :
J’ai créé un petit bout de code qui permet de se connecter à une base de donnée, va chercher différents strings et me les met (parce qu’il faut bien les stocker quelque part non ?) dans une ArrayList.
Youpy je suis content.

Seulement voila le moment fatidique ou mon code est bien joli, mais qu’est e que j’en fait ? COmprendre comment je l’organise dans le fichier aspx.cs et d’une manière générale, comment je fais pour qu’il soit affiché (j’utilise un truc qui s’appelle SonOfSmartPart pour ceux qui connaissent, qui permet de filer les deux fichier et qui va mettre ca dans une webpart specialement concu pour :P).

Voila, que de questions sans réponses ! :stuck_out_tongue:
Merci d’avance, j’espère avoir été assez clair :stuck_out_tongue:

Je suis pas sur de piger ce que t’essayes de faire du tout en fait. Un aspx c’est un formulaire, cad une page entiere. Et stocker le retour d’une DB dans une arraylist, ca me parait tres louche, pourquoi ne pas garder la DataTable ou le DataSet?

En fait, je devais faire des tests pour savori quoi garder mais je viens de me rendre compte que je peux filtrer avec la requète en fait.
Bref, c’est pareil, je récupère le tout dans un SqlDataReader (c’est ce que j’ai compris des conection en base, mais peu être que là non plus j’ai tout faux lol). Mais ma question est comment afficher quelque chose dans mon aspx (j’essaie de faire un truc de ce genre a priori)

Bref en très gros, comment afficher les résultats de ma requète dans une page aspx quoi ^^

edit : et là tout à coup, le Cobra émerge de son coma et se dit qu’en fait, il suffit, s’il voit bien le truc, de juste faire une aspx avec un peu de code C#pour ses requètes, et de l’afficher en html après… j’ai bon glop ?

Exemple en .net 2.0 ou t’as pas besoin de codebehind juste pour faire ca, mais bon si tu veux tu peux, ca ressemble beaucoup a ce niveau la…

Test.aspx

[code]<%@ Page Language=“C#” %>

GridView Bound to SqlDataSource [/code]

Et t’as un web.config

<?xml version="1.0"?> <configuration> <connectionStrings> <add name="Pubs" connectionString="Server=(local)\SQLExpress;Integrated Security=True;Database=pubs;Persist Security Info=True" providerName="System.Data.SqlClient" /> </connectionStrings> <system.web> <pages styleSheetTheme="Default"/> <caching> <sqlCacheDependency enabled="true" pollTime="1000"> <databases> <add name="Pubs" connectionStringName="Pubs"/> </databases> </sqlCacheDependency> </caching> </system.web> </configuration>

oki merci mon Glop, je vais essayer de comprendre ca et de l’adapter à ce que j’ai besoin ! :stuck_out_tongue:

edit : bon et là je viens de me rendre compte que j’ai marqué aspx partout au lieu de ascx.
Et là tu vas me dire que ca n’a plus rien a voir :stuck_out_tongue:

http://www.asp.net/QuickStart/aspnet/doc/data/default.aspx
Sinon hein…

Ouai merci pour le lien, je sens que t’en as marre :stuck_out_tongue: (enfin si ce #dfgdfgd$dfsdf de réseau veut bien l’afficher la page, a par cafzone, j’ai plein de problème depuis 5mn pour afficher une page…)

Haha non j’en ai pas marre, c’est juste un site pas mal pour debuter. Tout asp.net d’ailleurs, t’as plein de videos aussi qui sont plutot bien faites il parait. Check it out.

Bon je sais Glop que t’es pas là pour faire le travail à notre place, mais sérieusement, je pense commencer à cerner comment marche tout ca, mais j’ai navigé sur pas mal de site et j’ai pas trouvé d’exemple simple avec une structure toute conne de l’organisation s’un ascx et du ascx.cs qui va avec.

Bon du coup, je vais te mettre ce que j’ai écrit par rapport à ce que j’ai compris et si tu pouvais me dire ce qui ne va pas, ca m’arrangerais :stuck_out_tongue: (nota, le code est pas fini fini, c’est juste un petit essai de ce que je voudrais)

SelectLink.ascx

<%@ Control Language="C#" AutoEventWireup="false" Codebehind="SelectLink.ascx.cs" Inherits="SelectLink" %> <asp:hyperlink ID="SelectLink1" Runat="server"> </asp:hyperlink>

SelectLink.ascx.cs

[code]using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.SharePoint;
using System.ComponentModel;
using System.Collections;
using System.Data.SqlClient;

public class SelectLink : System.Web.UI.UserControl, SonOfSmartPart.IAdvancedUserControl
{
protected System.Web.UI.WebControls.Label SelectLink1;
protected void Page_Load(object sender, EventArgs e)
{
SqlConnection myConnection = new SqlConnection(« user id=guest; » +
« Trusted_Connection=yes; » +
"database=STS_sharepoint_1; ");
String userName = Context.User.Identity.Name;
try
{
myConnection.Open();
}
catch(Exception e)
{
Console.WriteLine(e.ToString());
}

	try
	{
		SqlDataReader myReader = null;
		SqlCommand myCommand = new SqlCommand("Select DocumentLibraryUrl from Librarylink where Username ="+ userName + "", myConnection);
		myReader = myCommand.ExecuteReader();
		SelectLink1.Text = "";
		while(myReader.Read())
		{
			SelectLink1.Text = myReader["DocumentLibraryUrl"].ToString();
		}
		
	}
	catch (Exception e)
	{
		Console.WriteLine(e.ToString());
	}
	}

	#region IAdvancedUserControl Members

	public Microsoft.SharePoint.WebPartPages.ToolPart[] GetCustomToolParts()
	{
		return null;
	}

	Microsoft.SharePoint.SPWeb currentWeb;
	public void SetContext(Microsoft.SharePoint.SPWeb web, SonOfSmartPart.SonOfSmartPartUC webpart)
	{
		currentWeb = web;
	}

	#endregion

}[/code]

Bon voila donc ca doit piocher des infos dans la base de données et les afficher sous forme de lien dans l’ascx (ok là si y’en a plusieurs ca les écrase mais c’et juste pour tester ^^). J’ai tellement testé de trucs que je sais même plus ce qui est necessaire ou pas dans le code :stuck_out_tongue:

Après, si tu crois qu’il n’y a pas besoin de codebehind, et tout, je susi preneur pour de plus amples informations :stuck_out_tongue:

J’adore me payer un WE de quatre jour et revenir me prendre la tête sur un truc que personne ne connait dans la boite pour un projet à rendre très bientot :stuck_out_tongue:

Ben c’est dur de juger la comme ca sans contexte ou quoi sur le design general.

Sinon sur le detail, catch(Exception) c’est le mal, surtout que t’as pas besoin de faire deux groupes try/catch comme tu fais :stuck_out_tongue: et fais tourner fxcop sur ton code, ca te donnera des pistes d’amelioration. Mattes online pour trouver comment on fait, a priori c’est juste une case a cocher dans 2005 (ptet pas dans express). Et groupe tes declarations de variables privees en haut, pas reparties partout :stuck_out_tongue: Ha et t’as un ReadScalar() aussi qui est bien pratique quand tu veux retourner une unique valeur d’une requete SQL.

OK merci mon Glop :P. Mais disons, que sur la structure générale, ca marche comme ca ? Parce que bon j’étais pas très sur de comment ca s’organisait.

Et dernier petit truc avant que je retorune bosser, apparement quand j’utilise l’ascx, ca me dit un truc dans la wab part :
Error: unable to load ~/UserControls\SelectLink.ascx
Details: Could not load type ‘SelectLink’

C’est qu’il trouve pas la classe ou quoi ?

edit : tiens et une petite question pour Visual Studio (j’utilise le 2003), ayant les framework 1.1 et 2.0 d’installé, VS utilise quel version du framework ? Dans le sens où si on veut un projet en 2.0 ou 1.1, on peut choisir ? Parce que je voudrais rajouter une dll dans les références mais qui ne fonctionne qu’en 2.0 et ca me met une erreur quand j’essaie de la rajouter…

C’est le mal parce que c’est l’Exception générique ?

ok bon, ca commence a marcher à peu près, le seul problème (enfin le seul…) c’est qu’aparemment la connection à la base de donnée ne se fait pas, les paramètres ne doivent pas être bon… (base sqlserver)
Je me demande aussi s’il faut pas modifier un truc dans le fichier web.config…

Bref je vais chercher de mon coté mais si quelqu’un sait comment faire ca, ca m’arrangerait :stuck_out_tongue:

Oui oui :stuck_out_tongue: pas que dans un truc comme ca, ca change grand chose ou qu’il faille jamais jamais le faire, mais dans l’absolu, en general, c’est mal :stuck_out_tongue:

Ouf bon, c’est nickel j’en suis venu à bout, tout marche bien, plus qu’a m’attaquer au design. Joie… :stuck_out_tongue:

Bon j’ai un dernier problème concernant SharePoint, j’en appel donc à toi, ô grand Glop, ou à toute personne susceptible de s’y connaitre un tant soit peu.

Je vous explique :
J’ai fait tout sur le serveur de dev, et pas de problème, tout fonctionne correctement, la vie est belle, les oiseaux chantent…
J’ai donc installé un AD, sqlserver 2000 sp4 et SharePoint. J’ai commencé à modifier le site quand je me susi apercu d’une chose : certains éléments ne s’affichaient pas.
Hop je me connecte donc via Frontpage pour voir ca et là… Ben certaines balises SharePoint n’ont pas l’air de fonctionner.
Exemple : La boite de recherche ne s’affiche pas sur le site. Pourtant il y a bien le code <SharePoint:ViewSearchForm ID=“L_SearchView” Prompt=“Rechercher dans ce site” Go=“OK” runat=“server”/> mais dans l’apercu de conception, au lieu de la boiboite, j’ai juste ca SharePoint:ViewSearchForm .
Et je me suis apercu que c’est pas le seul : <SharePoint:ProjectProperty Property=“Description” runat=“server”/> m’affiche SharePoint:ProjectProperty dans l’apercu.
Par contre, <SharePoint:ProjectProperty Property=“Title” runat=“server”/> m’affiche bien un truc.

Bref, ca parrait bizarre. Quelqu’un aurait-il une idée ? dll sharepoint corrompu, un truc que j’aurais mal installé/modifié en passant le web.config pour qu’il marche en asp.net 2.0 ? Ou tout auter chose ?

Je dirais pb de config mais la je sais vraiment pas :stuck_out_tongue:

Merci mon Glop. Bon ca m’avance pas trop, mais je continu de chercher. C’est tout de même bizarre que certaines marchent et d’autres pas :stuck_out_tongue:

Haha j’adore SHarePoint…
Bon bref, suite de ce roman fleuve. Totale réinstall avec sqlserver2k5 histoire de… tout remarche nickel.
Bon par contre, Glop, j’ai un petit problème (oui encore). En fait même 3 B). Plus ou moins simple.

On est passé en Trusted connection. Du coup, mon petit composant qui se connait a la base pour cherhcer mes petites infos a une connectiostring qui change. Bref passage a trusted_conection=“yes” (testé aussi avec les autres variantes), virage de user IS et password.
Petit problème : en me connectant avec le compte admin ca marche nickel, mais en me connectant avec les auters compte utilisateur, ca me fait une belle page d’erreur de composant webpart. Y aurait-il un truc spécial a faire pour que ca fonctionne ?
Configuration suivante : utilisateur sur AD, appartenant a un groupe de l’AD. Création de groupe de sites sharepoint avec roujout des groupes AD dans les groupes Sharepoint. BOn sans connection a la base (comprend mise en commentaire de ce qui concerne la connection a la base) ca marche bien…
Du coup vu que ca marche pour l’admin qui est un admin créé sur l’AD, je me demandais si me susers devaient appartenir a un groupe spécial pour que ca marche aussi.

Deuxième, si tu connais : par défaut les listes de liens, ouvrent le lien dans la même fenetre. Je voudrais que ca se fasse dans une nouvelle. Bon je trovue un petit code qui m’a l’air sympathique. Ca me rajoute bien la petite case pour choisir, mais au final ca fait rien de plus. Bizarre.

Troisième, pas vraimetn un problème mais surmement une option que j’ai aps vu : Sur toute sles pages, en haut a gauche, on trouv le lien pour aller sur le site du dessus. Saurais tu s’il y a une option pour désactiver ca ?

Voila summon l’aide de toute sles personnes qui s’y connaissent, bien que personne n’a l’air de faire du sharepoint sur la zone. Vivement que ce projet ce terminte, j’en ai ma claque…

Bon question 1 et 3 résolu B)