Formattage d'un datagrid dynamique

Résolu
nomisch Messages postés 6 Date d'inscription jeudi 2 juillet 2009 Statut Membre Dernière intervention 18 janvier 2010 - 6 juil. 2009 à 12:13
nomisch Messages postés 6 Date d'inscription jeudi 2 juillet 2009 Statut Membre Dernière intervention 18 janvier 2010 - 6 juil. 2009 à 14:15
Bonjour,

Je débute en prog C# (mais ai une grande exp de C++, Java, ..)
Je suis en train de développer un petit programme pour WinMobile. (decouverte et par après action sur differents appareils bluetooth)

Je suis en train de faire l'interface graphique et j'aimerais pouvoir afficher mes appareils dans un tableau (DataGrid). J'ai cependant un petit problème de visuel. Je n'arrive pas à definir la lsargeur de mes colonnes, rien a y faire. J'ai essayé en passant par des dataGridTableStyle, mais j ai beau faire tout ce que je veux, rien ne marche... et ca m'enerve pasque ce code est tout simple !

A noter que mon dataGrid n'est pas lié à une base de donnée ou autre mais que j'ajoute mes éléments à la main (enfin en  code) !
A noter aussi que j'ai créé dans ce code, 2 cas ( Bluetooth ou pas...) le ou pas est juste pour pouvoir tester, lorsque je clique sur un bouton ca me rajoute unew ligne dans ma table !

Merci pour l'aide

using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace SmartDeviceProject_BluetoothDiscover
{
    public partial class Form1 : Form
    {
        BindingList<DataTable> source;
        bool bluetooth = false;
        int num;
        public Form1()
        {

            InitializeComponent();
            createDataGridTableStyle();
 
            source = new BindingList<DataTable>();
            dataGrid_btDiscovered.DataSource = source;
        }

        //Create the table style to display the infos
        private void createDataGridTableStyle() {
            DataGridTableStyle ts1 = new DataGridTableStyle();
            ts1.MappingName = "myStyle";

            //Create the column style of the id
            DataGridColumnStyle idCol = new DataGridTextBoxColumn();
            idCol.MappingName = "Id";
            idCol.Width = 10;
            ts1.GridColumnStyles.Add(idCol);

            DataGridColumnStyle macAddrCol = new DataGridTextBoxColumn();
            macAddrCol.MappingName = "MacAddr";
            macAddrCol.Width = 100;
            ts1.GridColumnStyles.Add(macAddrCol);

            DataGridColumnStyle NameCol = new DataGridTextBoxColumn();
            NameCol.MappingName = "Name";
            NameCol.Width = 50;
            ts1.GridColumnStyles.Add(NameCol);
            dataGrid_btDiscovered.TableStyles.Add(ts1);
        }

        private void but_scanBT_Click(object sender, EventArgs e)
        {
            //2 cases: with or without Bluetooth
            if(!bluetooth){
                source.Add(new DataTable(){
                    Id = num,   
                    MacAddr = "macAddr" + num.ToString(),
                    Name = "nom" + num.ToString()          
                });
                num++;
            }else{
                //Clear table
                //TABLE_AppBT.Clear();
                num = 1;
               
                InTheHand.Net.Sockets.BluetoothClient bc;
                /*bc = new InTheHand.Net.Sockets.BluetoothClient();
           
                //try to discover devices (maxDevices, authenticated, remembered, unknown)
                InTheHand.Net.Sockets.BluetoothDeviceInfo[] devices = bc.DiscoverDevices(10, true, false, true);
                //Add each device found in the dic and show it in the grid
                foreach (InTheHand.Net.Sockets.BluetoothDeviceInfo btInfo in devices)
                {
                    //Create a new row for the dataTable
                 /* source.Add(new DataTable(){
                    Id = num,   
                    MacAddr = btInfo.DeviceAddress.ToString(),
                    Name = btInfo.DeviceName          
                });
                num++;
                }*/
            }
        }
    }
    public class DataTable
    {
        public int Id { get; set; }
        public string MacAddr { get; set; }
        public string Name { get; set; }
    }
}

1 réponse

nomisch Messages postés 6 Date d'inscription jeudi 2 juillet 2009 Statut Membre Dernière intervention 18 janvier 2010
6 juil. 2009 à 14:15
Ok, j'ai trouvé la réponse sur un autre forum:

Le mappingName du tablestyle doit etre référencé de la sorte:

ts1.MappingName = dataGrid_btDiscovered.DataSource.GetType().Name;

et après, magie ... ça fonctionne !

ouala !
3
Rejoignez-nous