J'ai créé un tableau 2 dimensions de cordes et le peuplé. J'essaie de le lier à une commande de datagrid comme si: au lieu de voir le contenu de la matrice, je vois les colonnes suivantes: longueur, rang, classement, Syncroot, IsReadonly, IsfixedSize, Issyncrhonisée . P> Donc, au lieu d'afficher le contenu de ma matrice, il affiche les propriétés du tableau. Qu'est-ce que j'ai fait de mal? P> p>
4 Réponses :
Lorsque vous autorisez le contrôle de la grille de générer des colonnes générer automatiquement, elle énumérera essentiellement les propriétés de cet objet et créera une colonne pour chacune d'elles. Il n'a aucun moyen de savoir que vous souhaitez afficher cela comme une grille de valeurs de tableau.
Vous devez créer un nouvel objet (comme une liste énumérable d'une classe) hors de la matrice avec les propriétés que vous souhaitez. se lier à des colonnes. Un moyen rapide de le faire serait d'utiliser un type anonyme, construit à l'aide d'une requête LINQ. Quelque chose comme: p> ici, nous sommes itérients à travers les 100 éléments de la matrice. Chaque élément est un tableau de 2 cordes. Nous créons un type anonyme de ces deux cordes. Ce type a deux propriétés: Bien sûr, vous pouvez définir exactement comment les colonnes seront créées en définissant col1 code> et
col2 code>.
col1 code> sera défini sur l'index de tableau 0 et
col2 code> sera défini sur l'index de tableau 1. Ensuite, nous construisons la grille à cette énumération de types anonymes. Cela ressemblera à quelque chose comme: p>
p>
autogeneratécolumns code> sur false et remplissait la collection code> code>. Cela peut être fait de manière aussi bien dans votre fichier ASPX. P> P>
Vous devez convertir votre matrice en un jeu de données
string[][] Array = new string[100][]; DataTable dt= new DataTable(); int l= Array.length; for(int i=0;i<l;i++) { dt.LoadDataRow(Array[i], true); //Pass array object to LoadDataRow method } dataGridView.DataSource = dt;
Vous pouvez faire quelque chose comme ça voir ce lien Bandes de liaison à GridView dans ASP.NET strong> P> P>
using Linq; var Found = (from arr in myArray2D select new { row1 = arr[0], row2 = arr[1], row3 = arr[2] }) .Where(y => (y.row1.ToUpper() + y.row2.ToUpper()) .Contains(sText.ToUpper())) .OrderByDescending(y => Convert.ToInt32(y.row3)).ToList(); dataGridViewFind.DataSource = Found; dataGridViewFind.AutoResizeColumns();
Ces commandes recherchent un texte dans les colonnes 1 et 2 de la matrice et return en apportant des colonnes 1, 2 et 3 de la matrice et les trichent par la colonne 3 converti de la chaîne en chiffre en chiffres.
Comment vous attendez-vous à voir ces informations dans le GV?
À quoi ressemble votre XAML pour votre contrôle DataGrid?
Pour [x] [Y] J'espérais que chaque rangée représenterait la [x] ... et les colonnes représenteraient la [Y], de sorte que le contenu de [2] [5] serait affiché sur le Datagramrid dans le 2e Rangée, 5 colonnes.
@ryrich qu'est-ce que xaml?
Pour commencer, je n'appellerais pas votre tableau "Array". En plus de cela, courez-le à travers le débogueur et après avoir défini votre tableau, regardez-le dans une fenêtre de montre. Voyez si vous pouvez identifier la propriété qui vous donnera ce que vous recherchez.
Vous ne pouvez pas lier directement une matrice déchiquetée à un DataGridView. Cependant, vous pouvez l'afficher: Stackoverflow.com/ Questions / 4111308 / ...
@RYRICH
DATAGRIDVIEW CODE> NON
DATAGRID CODE>, j'espère qu'il utilise WinForms non WPF.