Como faço para vincular o resultado de DataTable.Select () para um controle de caixa de listagem?

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

Pergunta

Eu tenho o seguinte código:

ListBox.DataSource = DataSet.Tables("table_name").Select("some_criteria = match")
ListBox.DisplayMember = "name"

O DataTable.Select() método retorna uma matriz de System.Data.DataRow objetos.

Não importa o que eu especificar na propriedade ListBox.DisplayMember, tudo o que vejo é a caixa de listagem com o número correto de itens todos mostrando como System.Data.DataRow em vez do valor que eu quero que está na coluna "name"!

É possível ligar para a matriz resultante da DataTable.Select(), em vez de loop através dele e adição de cada um para o ListBox?

(Não tenho problema com looping, mas não parece um final elegante!)

Foi útil?

Solução

Use a DataView .

ListBox.DataSource = new DataView(DataSet.Tables("table_name"), "some_criteria = match", "name", DataViewRowState.CurrentRows);
ListBox.DisplayMember = "name"

Outras dicas

Josh tem direito com o DataView. Se você precisa de um grande martelo, você pode tomar a matriz de linhas a partir de qualquer DataTable.Select ( "...") e fazer uma mesclagem em um DataSet diferente.


 DataSet copy = new DataSet();
 copy.Merge(myDataTable.Select("Foo='Bar'"));
 // copy.Tables[0] has a clone

Essa abordagem para o que você está tentando fazer é provavelmente um exagero, mas há casos em que pode ser necessário para obter uma fora tabela de dados de uma matriz de linhas onde é útil.

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