Pergunta

Editar 1

Eu acredito que meu problema decorre do seguinte. A função que preenche a parte suspensa Define a apresentação dos membros do CountyName. Então, quando eu tentar definir o SelectedText ou editValue, como tem sido sugerido, essa função só retorna a CountyID que tente do que correspondem a algo na lista suspensa DisplayMember. Eu preciso dele para combiná-lo com algo na lista ValueMember.

Usando a seguinte eu tenho que trabalhar, mas é um truque e eu muito apreciaria encontrar uma solução real.

lkuResidenceCounty.ItemIndex = Convert.ToInt32(row["ResidencyCountyID"].ToString());

Original Publicar

Eu tenho uma caixa de pesquisa (DevExpress) em um formulário membro que eu preencher os valores possíveis a partir do DB com este código ->

        lkuResidenceCounty.Properties.DataSource = ConnectBLL.BLL.Person.CountyList();
        lkuResidenceCounty.Properties.PopulateColumns();
        lkuResidenceCounty.Properties.DisplayMember = "CountyName";
        lkuResidenceCounty.Properties.ValueMember = "CountyID";
        lkuResidenceCounty.Properties.Columns[0].Visible = false;
        lkuResidenceCounty.Properties.Columns[2].Visible = false;
        lkuResidenceCounty.Properties.Columns[3].Visible = false;

Isso funciona muito bem como o CountyName é exibido como esperado.

No entanto, quando eu tento e carregar o valor de um membro existente para este campo usando a seguir, que é parte de uma função que recebe uma linha do DataSet ->

lkuResidenceCounty.Properties.ValueMember = row["ResidencyCountyID"].ToString();

Eu recebo uma caixa em branco. Eu pisei através do código e a identificação correta está sendo devolvido para o membro.

Infelizmente o procedimento armazenado para preencher as opções suspensas puxa de uma tabela de manutenção com as colunas "CountyName" & "CountyID". Então, isso é correto. Infelizmente, o procedimento armazenado para carregar puxa condado atuais de uma pessoa específica da tabela Pessoa, onde há uma coluna chamada "ResidencyCountyID". É assim chamado porque também há uma coluna "ResponsibilityCountyID".

Eu preciso de uma maneira para que eles tanto para coexistir, alguma solução?

Obrigado!

Foi útil?

Solução

DisplayMember e ValueMember são usados ??para preencher o controle com a lista de valores selecionáveis. Para definir o valor seleccionado de um controlo LookUpEdit povoada, definir o seu editValue propriedade:

lkuResidenceCounty.EditValue = row["ResidencyCountyID"].ToString();

Em resposta à sua edição: De acordo com a documentação:

A linha atualmente selecionada determina os valores para o valor de edição do editor e exibir texto. O valor para BaseEdit.EditValue é obtido a partir do campo RepositoryItemLookUpEditBase.ValueMember, enquanto o texto para exibição na caixa de edição é obtido a partir do campo RepositoryItemLookUpEditBase.DisplayMember da linha selecionada.

Quando você altera BaseEdit.EditValue, os localiza editor e seleciona a linha de quem RepositoryItemLookUpEditBase.ValueMember campo contém o novo valor. O texto na caixa de edição é alterado para refletir a linha recém-selecionada.

Eu não usar esses controles, mas parece-me que não deveria estar trabalhando como você descreveu. Eu acho que o ToString () é o problema porque editValue aceita um objeto para que ele provavelmente está esperando um int para o valor. Tente:

lkuResidenceCounty.EditValue = (int)row["ResidencyCountyID"];

Outras dicas

O ValueMember propriedade conta a lista o campo para puxar a partir de quando definir a propriedade Value. Depois de definir o ValueMember para "CountyID", em seguida, quando a lista é Databound, ele irá definir todas as propriedades de valor para os seus objetos respeito os itens da lista campos CountyID.

Assim, você não deve fazer:

lkuResidenceCounty.Properties.ValueMember = row["ResidencyCountyID"].ToString();

mas sim

lkuResidenceCounty.Properties.ValueMember = "CountyID";

foi perfeitamente bem, desde que você tenha identificado corretamente o campo que você está tentando vincular. Uma vez que a ligação de dados da lista de get você deve ver os resultados que você está esperando.

No entanto, depois de olhar para o seu código, parece que você está descasamento seu campo. Em um lugar que você está usando ResidencyCountyID e em outro que você está usando CountyID. Que é mais provável a sua fonte de confusão. Descobrir o que o nome do campo real é e certifique-se de definir o ValueMember a isso.

Atualizar

Depois de ler o seu comentário, o que procura é a propriedade SelectedValue. A propriedade SelectedValue conta a lista para forçar o valor selecionado para qualquer entrada que você dá a ele.

Essencialmente, você tem duas coisas acontecendo aqui. ValueMember conta a lista o que usar como o valor de sua fonte de dados e SelectedValue que conta a lista que o valor selecionado deve ser.

Por que é que você precisa a mesma LookUpEdit ter dois membros de valor? Está a ser usado independente ou em uma grade? Se autônomo, você pode trocar os dois editores repositório dependendo da linha atual. Mas, há mais de 2 valores possíveis para a ValueMember? Isso faria as coisas também complicam.

Atualização

Olhando para a sua edição, eu acho que entendo o que está acontecendo um pouco mais. Então, você não deseja alterar a sua ValueMember (que refere-se a uma coluna de dados), mas sim para alterar o valor do editor? Se assim for, então você deve definitivamente usar editValue (não SelectedText, que eu não acredito que se destina a ser definido), e atribuí-la a row [ "value_field"] assim:

lkuResidenceCounty.EditValue = row["ResidencyCountyID"];

O que acontece quando você faz isso?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top