Changement de contrôle GridView les propriétés de la colonne à partir du code-behind
Je suis entrain de créer un GridView dans une méthode comme suit:
GridView gridView = new GridView();
gridView.DataSource = reportData.Tables[0];
gridView.DataBind();
Je suis plus loin de l'exporter vers Excel et il fonctionne très bien. Les colonnes sont générés automatiquement à partir de mon source de données. Je voudrais changer le DataFormatString propriété de certaines colonnes, mais après je databind et avant que je l'exportation vers Excel. Je n'arrive pas à trouver la bonne propriété à modifier. Quelqu'un peut-il me diriger dans la bonne direction?
OriginalL'auteur Mike Cole | 2009-07-16
Vous devez vous connecter pour publier un commentaire.
Selon AutoGenerateColumns documentation:
Je fatigué à la recherche de ces
AutoGeneratedField
s avec pas de chance.Je peux penser à plusieurs options pour atteindre cet (du pire au meilleur):
RowDataBound
), ce qui vous donnera accès à des lignes de cellules, mais n'est pas trop commode.Ne pas utiliser
AutoGeneratedField
Créer ces colonnes manuellement, comme dans:Cette options vous donne bes contrôle sur les titres.
List<Employee)
), etAutoGeneratedField
transforme en colonnes.Je pense que c'est la meilleure option. Supposons que vous pourriez accéder à l'auto colonnes, que faire alors? Vous auriez à la recherche d'une colonne en fonction de son nom ou de l'index, ce qui semble très compliqué, et augmente le couplage.
Et, comme dernière remarque, vous devriez penser à la création de fichiers Excel à l'aide de l'API. Il n'est pas facile, mais le format HTML XLS fichiers sont de moins en moins compatible avec Excel 2007 -, il affiche un message d'avertissement que le format de ce fichier est incompatible avec l'extension, et pire encore, le fichier freins si il est ouvert et l'enregistre (peut être
Save As
tout de même), ce qui rend vos fichiers moins convivial.Je crois donc, si vous utilisez office de l'interopérabilité. Si vous créez des fichiers xlsx (office 2007), ils sont essentiellement un groupe de zippée fichiers XML, de sorte que vous pouvez les créer relativement facilement (best - trouver une bibliothèque). Vous pouvez également écrire à Excel via une chaîne de connexion et le fournisseur ole db. La façon la plus simple, btw (thoug sans mise en forme), est de créer un fichier CSV.
Je ne peux pas installer Excel sur le serveur. Je ne peux pas utiliser les fichiers xlsx, car ceux-ci doivent être compatibles avec ceux de 2000 et de 2003. Le formatage est nécessaire, de sorte que je ne peux pas utiliser csv. Je pense que je peut essayer votre deuxième suggestion ci-dessus et je vais voir comment ça fonctionne. Merci!
Votre méthode n ° 2 ci-dessus semble bien fonctionner, mais maintenant je ne peux pas formater ma ligne d'en-tête avec le code suivant, car gridView.HeaderRow est null. Comment puis-je contourner ce problème? gridView.HeaderRow.BackColor = Système.De dessin.Couleur.Jaune;
Salut, eh bien, c'est une toute nouvelle question, mais essayez de le gridView.HeaderStyle bien, devrait être ce que vous cherchez. Aussi, essayez de regarder pour le HeaderRow lors d'un autre événement, comme
DataBound
, il est nul àLoad
, voir msdn.microsoft.com/en-us/library/...OriginalL'auteur Kobi
Par exemple:
OriginalL'auteur João Silva
C'est la question de comment asp.net des œuvres. Lorsque vous créez des contrôles (colonnes) dans une méthode et un ensemble de contrôle de l'utilisateur, la prochaine fois que l'utilisateur post-sauvegarde de données pour vous, vous n'avez pas accès à ces colonnes depuis qu'ils ... n'existe pas. Chaque fois que vous affichez votre site, un nouvel objet (instance) est créé.
La seule façon d'être en mesure d'obtenir des données en post-retour de contrôle créé précédemment est de créer des contrôles dans Page_Init méthode...
OriginalL'auteur smok1
Voici un extrait d'un GridView exportateur j'ai écrit qui convertit les commandes dans un GridView dans les littéraux qui sont re-formaté. Il peut être de quelque secours:
OriginalL'auteur Dan Diplo