6
votes

Comment afficher le contenu de ce tableau à l'aide de DataGridView?

J'ai créé un tableau 2 dimensions de cordes et le peuplé. J'essaie de le lier à une commande de datagrid comme si: xxx

au lieu de voir le contenu de la matrice, je vois les colonnes suivantes: longueur, rang, classement, Syncroot, IsReadonly, IsfixedSize, Issyncrhonisée .

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?


7 commentaires

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 NON DATAGRID , j'espère qu'il utilise WinForms non WPF.


4 Réponses :


3
votes

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: xxx

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: col1 et col2 . col1 sera défini sur l'index de tableau 0 et col2 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:

Entrez la description de l'image ici

Bien sûr, vous pouvez définir exactement comment les colonnes seront créées en définissant autogeneratécolumns sur false et remplissait la collection . Cela peut être fait de manière aussi bien dans votre fichier ASPX.


0 commentaires

2
votes

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;


0 commentaires

0
votes

Vous pouvez faire quelque chose comme ça xxx

voir ce lien Bandes de liaison à GridView dans ASP.NET


0 commentaires

0
votes
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();

1 commentaires

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.