web-dev-qa-db-fra.com

Comment lier des colonnes spécifiques d'un datatable à un DataGridView?

Ma DataTable a trois colonnes extraites d'une base de données, alors que je n'ai besoin de lier que deux colonnes à une DataGridView. Pouvez-vous m'aider s'il vous plaît?

11
Sangeetha

Créez vous-même les colonnes pour DataGridView. Essayez quelque chose comme ça.

DataGridView dataGridView1 = new DataGridView();
BindingSource bindingSource1 = new BindingSource();

dataGridView1.ColumnCount = 2;

dataGridView1.Columns[0].Name = "Field1";
dataGridView1.Columns[0].DataPropertyName = "Field1";
dataGridView1.Columns[1].Name = "Field2";
dataGridView1.Columns[1].DataPropertyName = "Field2";

bindingSource1.DataSource = GetDataTable();
dataGridView1.DataSource = bindingSource1;
23
JoeyRobichaud

Ajoutez la colonne comme réponse ci-dessus, et n'oubliez pas de définir:

dataGridView1.AutoGenerateColumns=false;
16
Nomi Ali

Cette question a été posée il y a quelque temps, vous n'aurez donc probablement pas besoin de cette réponse ... J'espère que d'autres la trouveront utile. 

Je devais faire quelque chose de similaire et la solution la plus simple consistait à créer une copie temporaire de la table (dans laquelle vos données étaient stockées), puis à supprimer simplement la colonne en question. Par exemple:

DataTable temp = YourDataTable;
temp.Columns.Remove(temp.Columns[2]) // Will remove the third column for example
YourDataTable.DataSource = temp;
YourDataTable.DataBind();

Je pense que cela devrait faire l'affaire! 

À votre santé!

1
Adrian
private void Form1_Load(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection("connection string");
        SqlDataAdapter adp = new SqlDataAdapter("select  Fieldname1,fieldname2 from Table Name", con);
        DataSet ds = new DataSet();
        ds.Clear();
        adp.Fill(ds);
        if (ds.Tables[0].Rows.Count > 0)
        {
            dataGridView1.DataSource = ds.Tables[0];
  }

Cela fonctionnera certainement.

1
sabu

Nous pouvons créer un nouveau DataTable avec les colonnes requises et y ajouter des lignes à partir du jeu de données. Ensuite, nous pouvons initialiser le DataGrid avec le DataTable nouvellement créé.

dt = new DataTable();          
dt_Property.Columns.Add("Field1");
dt_Property.Columns.Add("Field2");
int i = 0;
DataRow row = null;
foreach (DataRow r in ds.Tables[0].Rows)
{               
    row = dt.NewRow();                    
    row["Field1"] = ds.Tables[0].Rows[i][1];
    row["Field2"] = ds.Tables[0].Rows[i][2];
    dt_Property.Rows.Add(row);   
    i = i + 1;
}

dataGridView1.DataSource = dt;
0
Sangeetha

Liez DataTable à DataGridView après que masquer la colonne que vous ne voulez pas.

dataGridView1.DataSource = datatable;
dataGridView1.Columns["ColumnName"].Visible = false;
0
saravanajd