cs_egwene
Messages postés54Date d'inscriptionlundi 31 juillet 2006StatutMembreDernière intervention 3 avril 2008
-
25 août 2006 à 09:19
cs_egwene
Messages postés54Date d'inscriptionlundi 31 juillet 2006StatutMembreDernière intervention 3 avril 2008
-
25 août 2006 à 12:40
Bonjour a tous.
Bon c'est encore moi !
Je suis sur un passage difficile la, j'y arrive pas. J'espere que qqun pourra m'aider.
J'ai une listBox contenant une liste d'utilisateurs.
Je veux faire un dataGridView comportant une seule colonne composee de cellule de type comboBox contenant une liste d'entreprise (un arrayList)
Lorsque je clique sur un utilisateur dans ma liste, le tableau doit se charger avec les entreprises associees a l'utilisateur designe (encore un arrayList).
Voila le code de ce que j'ai fais :
// Constructeur de la classe derivee de DataGridView
// Le formatage du dataGridView est fait dans la classe mere de SuitGroup
public SuitGroup()
{
m_cmbColumn = CreateNamedComboBoxColumn("lblCoName");
Columns.Add(m_cmbColumn);
}
// Fonction qui me permet de creer une colonne de comboBox
private DataGridViewComboBoxColumn CreateNamedComboBoxColumn(String colName)
{
DataGridViewComboBoxColumn column =
new DataGridViewComboBoxColumn();
column.Name = LanguageContext.currentLC.AppControls[colName];
return column;
}
// Fonction appelee dans mon pg principal et que me permet de charger le tableau.
// Vide si on n'a pas encore clique sur un utilisateur (base.Datas = null dans ce cas)
// Plein si on a clique sur un utilisateur
public override void Load()
{
// Clear the old data
Rows.Clear();
// If the new list is not empty
if (base.Datas != null)
{
// Ajout du nombre de ligne necessaire dans le tableau
Rows.Add(Datas.Count);
// i : indice de la ligne courante
int i=0;
// Pour chaque element de la liste d'entreprises associees a l'utilisateur designe
foreach (Company coCurrent in base.Datas)
{
DataGridViewComboBoxCell cellCur = (DataGridViewComboBoxCell)(Rows[i].Cells[m_cmbColumn.Name]);
// On charge un object de type "entreprise"
cellCur.Value = coCurrent;
i++;
}
}
}
Voila en gros. Mais le "cellCur.Value" me jete tout le temps sans raison comprehensible.
"entreprise" est bien sur derive d'Object. De toute facon, j'ai essaye aussi avec un String, ca passe avec une chaine vide mais pas avec une autre chaine !!!!
Je ne trouve pas comment afficher qqch dans mes combo. Il n'y a pas de propriete "Text", "SelectedText", "SelectedIndex" ou autre comme pour une combo classique. Je n'ai trouve que "value" !
Si qqun voit le probleme, merci pour l'aide qu'il pourrait m'apporter parce que la franchement je vois plus !!!
Si j'ai mal explique mon pb ou mon code, n'hesitez pas a demander des precisions.
cs_egwene
Messages postés54Date d'inscriptionlundi 31 juillet 2006StatutMembreDernière intervention 3 avril 2008 25 août 2006 à 12:40
Bon j'ai un pote qui a trouve ! Je donne la solution pour ceux qui seraient interesses :
// ca c'est pour charger la liste dans les combos
m_grdCompList.ComboColumn.DataSource = Company.GetList();
// La fonction Load( ) devient ceci :
// Elle permet d'afficher pour chaque ligne l'entreprise voulu en la selectionnant ds la combo
public override void Load()
{
// Clear the old data
Rows.Clear();
// If the new list is not empty
if (base.Datas != null)
{
// Adds the data in the DataGrid row by row.
int i=0;
Rows.Add(Datas.Count);
foreach (Company coCurrent in base.Datas)
{
DataGridViewComboBoxCell celCur =
(DataGridViewComboBoxCell)(Rows[i].Cells[m_cmbColumn.Name]);
// La ligne qui m'a pose tant de pb ! Avouez qu'il fallait la trouver !
celCur.Style.NullValue = coCurrent.Name;
i++;
}
}
}
cs_egwene
Messages postés54Date d'inscriptionlundi 31 juillet 2006StatutMembreDernière intervention 3 avril 2008 25 août 2006 à 10:33
J'ai modifie un peu ma fonction Load( ), ca marche toujours pas mais je pense me rapprocher du but : je donne le nom de ma company a "ValueMember" (coCurrent.Name) mais je prend comme message d'erreur que le nom n'existe pas dans la liste.
Pourtant, je les ai affiche dans une message box et les noms sont bien presents et identiques a celui dans le message d'erreur !
SVP, ca doit pas etre bien complique !
public override void Load()
{
// Clear the old data
Rows.Clear();
// If the new list is not empty
if (base.Datas != null)
{
// Ajout du nombre de ligne necessaire dans le tableau
Rows.Add(Datas.Count);
// i : indice de la ligne courante
int i=0;
// Pour chaque element de la liste d'entreprises associees a l'utilisateur designe
foreach (Company coCurrent in base.Datas)
{
// MessageBox.Show("index 0 : " + m_cmbColumn.Items[0] +
// "index 1 : " + m_cmbColumn.Items[1]);
DataGridViewComboBoxCell cellCur =
(DataGridViewComboBoxCell)(Rows[i].Cells[m_cmbColumn.Name]);
// On charge un object de type "entreprise"
celCur.ValueMember = coCurrent.Name;