DevExpress LookupEdit - réglage sélectionné DataRow par code

Je suis conscient qu'il y a d'autres des questions comme ça, mais leurs solutions ne fonctionnent pas pour moi.

J'ai le code suivant:

     lueSizes.Properties.DataSource = new BindingSource(PS.PaperSizes, null);
     lueSizes.Properties.Columns.Add(new LookUpColumnInfo("PaperName", "Größe"));
     lueSizes.Properties.DisplayMember = "PaperName";
     lueSizes.Properties.ValueMember = "PaperName";

     //PS is a regular System PrinterSettings object
     foreach (PaperSize size in PS.PaperSizes)

         //I confirmed with debugging that this actually happens correctly
         if (size.RawKind == binSettings.SizeRawKind)
          {
              lueSizes.EditValue = size;
              break;
          }

Remplissage de la LookupEdit avec la source de données fonctionne correctement, l'utilisateur peut sélectionner la taille de Papier dans la liste déroulante, et

lueSizes.GetSelectedDataRow() comme Papier

puis renvoie un format de Papier de l'objet comme prévu.

Le problème que j'ai est le réglage de la EditValue, il n'a tout simplement rien. J'ai vérifié que lors de l'exécution, la source de données contient tous les Papier des objets dans PS.PaperSizes, y compris celui qui se trouve dans la boucle foreach. Mais la mise en EditValue = taille n'est pas la cause de la ligne de données sélectionnée à jour en conséquence.

D'autres variations que j'ai essayé sont:

lueSizes.EditValue = taille.PaperName;

lueSizes.EditValue = lueSizes.Les propriétés.GetKeyValueByDisplayText(de la taille.PaperName);

lueSizes.EditValue = lueSizes.Les propriétés.GetKeyValueByDisplayValue(de la taille.PaperName);

lueSizes.EditValue = lueSizes.Les propriétés.GetKeyValueByDisplayValue(taille);

lueSizes.EditValue = 0;

Aucun de ces faire quoi que ce soit, sélectionnés datarow reste NULLE et n'affiche rien à l'utilisateur.

Quoi d'autre puis-je essayer de définir le DataRow par code?

Edit:

    private void lueSizes_EditValueChanged(object sender, EventArgs e)
    {
        object o = lueSizes.EditValue;
        object p = lueSizes.GetSelectedDataRow();
        PaperSize size = o as PaperSize;
        UpdateSize(size);
    }

L'objet o est l'objet que j'ai défini plus haut, le format de Papier de la taille que j'ai constaté dans la boucle, mais de l'objet p est null.

Avez-vous essayé RefreshDataSource
non, parce que la source de données ne change pas après sa déclaration, et parce que LookupEdit n'a pas cette méthode en premier lieu.

OriginalL'auteur Hackworth | 2011-09-22