Lista suspensa ligada de itens "não utilizados", mais item atual da linha no editItemTemplate of GridView?

StackOverflow https://stackoverflow.com/questions/2250395

Pergunta

Eu tenho duas tabelas com IDs exclusivos que podem ser mapeados um para o outro (uma tabela vem de um banco de dados fora do meu aplicativo, mas tem informações sobre as mesmas entidades que estou rastreando). Quero fornecer uma interface do usuário para vincular "meus" registros "com os" outros ", para que eu possa armazenar os IDs" outros "na minha mesa para os registros correspondentes. Em poucas palavras, o elemento principal da interface do usuário é uma lista suspensa que mostra os registros disponíveis (ou seja, ainda não ligados) da tabela "Other".

Eu tenho uma GridView para exibir registros "meus" em cada linha, além de uma coluna mostrando algumas informações do registro vinculado na tabela "outro", se houver. Os dados são sobre edifícios e propriedades, por isso pode ser assim:

Building1   Dallas   TX    Building1_Dallas_TX
Building2   Memphis  TN    Bldg2_Memphis_TN
Building3   Denver   CO
Building4   Seattle  WA
Building5   Boston   MA    Building5_Boston_MA

Onde as três primeiras colunas mostram algumas informações da tabela "My", e a última mostra o registro correspondente da tabela "Other", onde os registros já foram vinculados, caso contrário, um espaço em branco onde nenhum link foi estabelecido. Meu Gridview real possui várias outras colunas da tabela "minha", mas isso é suficiente para ilustrar a necessidade.

Quando a edição (não mostrada) é clicada para uma linha, quero poder editar todas as 4 colunas. Os três primeiros são caixas de texto; A última coluna deve ser uma lista suspensa mostrando todas as desvinculado registros da tabela "OUTRA", mais Uma opção "não atribuída" (como o primeiro item da lista) para que os registros possam ser "desvinculados" ou simplesmente não atribuídos, mais (Para as linhas que já têm um link estabelecido) O item vinculado (é "usado", mas precisa estar lá para que eles possam continuar a usá -lo).

Eu posso preencher a lista suspensa corretamente em código-behind no evento Gridview Rowedinging (exceto o item não atribuído que eu adiciono como um listItem no .aspx com a opção ApndendDataboundItems definida como true), e posso definir o correto de dados do DDL no dado do DDL Evento, mas no postback quando clico para atualizar a linha, o DDL não tem mais itens (exceto o item não atribuído), para que o link seja sempre limpo. Se eu definir um link manualmente editando diretamente minha tabela, tudo parecerá bom entrar no modo de edição-o DDL possui os itens corretos e pré-seleciona o item correto, mas tudo se perde no postback da atualização. Eu tentei re-vincular o DDL em vários estágios do ciclo da página, mas claramente não entendo muito bem o ciclo bem o suficiente, porque não consigo descobrir como obter o item selecionado pelo usuário para atualizar minha tabela.

Eu também tentei preencher o DDL com um sqldataSource SelectCommand, mas não tive sorte, incluindo o ID de registros atualmente vinculados no outro banco de dados (mesmo que esteja disponível na tabela "minha" e eu a defina como um Datakey GridView e add e Como um controlParameter no selectParameters para o sqldataSource. Sem o registro atualmente ligado na lista de itens DDL, não consigo manter os links existentes.

Vou adiar o envio de uma amostra de código por enquanto - esta mensagem já está muito longa! - na esperança de que a solução seja óbvia pelo que descrevi ... Não acho que meu objetivo seja estranho, mas estou aberto a ser persuadido de outra forma.

Muito obrigado antecipadamente!

Chris

Foi útil?

Solução

Ok, não vou entrar em detalhes com código, porque talvez você já tenha feito o que estou prestes a sugerir.

Para a última coluna, a lista suspensa, você deve executar uma instrução SQL para pegar os itens não vinculados. Use o "onde xx não está em". Para a opção "não atribuído", basta adicionar um item à lista no mesmo escopo de código acima.

O próximo passo é lidar com os eventos de edição do Gridview manualmente. Insira, atualize e exclua.

Eu acho que assim você não terá problemas.

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