将列表框选择绑定到数据网格 [英] bind list box selection to a data grid

查看:63
本文介绍了将列表框选择绑定到数据网格的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嗨伙计们;

我有一个列表框,使用过滤后的数据视图填充数据(只需要一列的名称),然后允许用户选择一个条目从列表中,单击相应的按钮,然后使用 按钮单击事件,打开另一个表单并使用参数填充表单(用于填充列表框的参数)。结果集将是基于相同参数返回的任何/所有列。

我为多个按钮分别单击事件,这些按钮都执行相同的基本操作,但每个按钮返回的数据来自单独的表格。这非常有效,但是......

我试图将单独的单击事件合并为一个,并使用用例选择来确定单击了哪个按钮,并返回相应的结果。

发生的问题是在转换为通用单击事件后,结果仅返回数据集中的第一行,而不管列表框选择如何。

我要包含一个代码片段,希望有人能够为我抓住这个问题!




私人 Sub AllFindButtons( ByVal 发件人 as system。 object ByVal 电子<字体颜色= "蓝色">作为 System.e.System.EventArgs)<字体颜色= "蓝色">把手
btnSuppliersFind.click,btnCustomersfind.click

'将发件人转换为按钮类型。
Dim btn为Button = CType(发件人,按钮)
Dim btnName as String = btn.Name
将文本字符串作为字符串= string.empty
将表格作为System.Data.DataTable = Nothing

'哪个文本框和数据表F ILTER使用
选择案例btnName
&NBSP;&NBSP;&NBSP;案 "btnSuppliersFind"
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;文本= txtSuppliersName.Text
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;表= NorthwindDataSet.Suppliers
&NBSP;&NBSP;&NBSP;病例 "btnCustomersFind"
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; TXT = txtCustomerName .Text
       table = NorthwindDataSet.Customers
End Select

Dim filteredview as Data.DataView = New Data.DataView(table )

'此行过滤器一般化
      filteredView.RowFilter ="CompanyName Like'%"+ text +"%'"

      Dim rowsFound As Int32 = filteredView.Count

     选择Case rowsFound
        案例0  '没有找到记录
            MessageBox.Show(_
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; "没有符合条件的记录发现",_
&NBSP;&NBSP;&NBSP;&NBSP ;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; "没有找到记录",_
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; MessageBoxButtons。 OK,_
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; MessageBoxIcon.Exclamation)
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP ;&NBSP;案例1
            '您显示的形式取决于按钮名称
           选择案例btnName
              案例"btnSuppliersFind"
                  frmSuppliers.CompanyNameParameter = _
                     filteredView.Item(0)("CompanyName")
                  frmSuppliers.Show()
              案 "btnCustomersFind"
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; frmCustomerDetails.CompanyNameParameter = _
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; filteredView.Item(0)("CompanyName")
                  frmCustomerDetails.Show()
           结束选择
         Case Else
            dlgPickMatchingCompany.FilteredView = filteredView
           昏暗的结果As DialogResult
            result = dlgPickMatchingCompany.ShowDialog()
           如果result = DialogResult.OK然后
               Dim rowView As Data.DataRowView
               rowView = dlgPickMatchingCompany.lbMatching.SelectedItem
              暗淡的companyName作为字符串= rowView.Row.Item( "公司名称")

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; "您显示的表单取决于按钮名称
              选择案例btnName
                 案例"btnSuppliersFind"
                     frmSuppliers.CompanyNameParameter = _
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP ;&NBSP;&NBSP; filteredView.Item(0)( "公司名称")
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP ;&NBSP;&NBSP; frmSuppliers.Show()
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;案 "btnCustomersFind"
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; frmCustomerDetails.CompanyNameParameter = _
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP ;&NBSP;&NBSP; filteredView.Item(0)( "公司名称")
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP ;&NBSP;&NBSP; frmCustomerDetails.Show()
              结束选择
           结束如果
     结束选择
  结束子

 

解决方案

< blockquote>


Oi Gente, Eu Tenho UMA Caixa de Listagem,Opaco E preenchido com Dados usandoUMAexibiçãodeDados filtrada(assim Quero o nomo
德UMA Coluna)中,e entao permitir Opaco OS USUARIOS selecionem UMA ENTRADA哒利斯塔,集团洛斯哼波涛corrosponding,E COMö集团德波涛事件摘要,阿布拉OUTROFormulárioËpreencheöFormulário山岛哼声Parâmetro(MESMO USADOparágrafopreencher一个Caixa
de Lista)。 0 CONJUNTO德Resultados赛瑞亚QUALQUÉR/托达como的Colunas retornadas COM基德nenhumParâmetroMESMO 。
Tenho camarilha洛斯EVENTOS甲Separados VARIOSparágrafosBOTOES,Opaco托多斯desempenham嗯MESMAAçãoBásica,com a ressalva de OpacoCADABotãoRetornaDados de Tabelas separadas。
de Isso Funciona Muito Bem,mas ...
eu tentei combinar OS eventos de camarilha Separados los hum assim,e USAR Caso selecione Para determinarqualiBotãoFOIclicado,e retornar OS RESULTADOS apropriados。
OpacoöProblema ocorreË者UMA转换器类parágrafo哼声坂东日事件摘要Genéricos,OsResultadosSóretornara Primeira Linha do Conjunto de Dados,independentemente deumaSeleçãodaCaixa
de Lista。 我在这incluíndo哼声Trecho德CódigoCOM一个埃斯佩兰萨德Opaco alguem颇得丝氨酸Capaz德Pegar ESSE Problema par mim!





































< span style ="">
btnCustomersfind.click
'remetente elenc o Como o TipodeBotão。
Dim btnComoBotão= CType(remetente,Button)
< span style =""> Dim btnName Como String = btn.Name
'determinar OS campos de Texto para USAR。
Dim Texto corda Como = vazio
Sistema Como mesa Dim。 dados。
DataTable = Nothing
'Qual Caixa de texto e Filtro de Tabela de DadosdoParáUSAR。
选择案例btnName
    Caso" btnSuppliersFind"
       text = txtSuppliersName.Text
       table = NorthwindDataSet.Suppliers
    Caso" btnCustomersFind"
       txt = txtCustomerName.Text
       table = NorthwindDataSet.Customers
结束选择
Dim filteredview Como Data.DataView = Novo Data。 DataView(Tabela)
este Filtro de Linha generalizada
< span style ="">       filteredView.RowFilter =" CompanyName Like'%" + Texto +"%'"
$






























< span style ="">
















      Dim rowsFound Como Int32 = filteredView.Count


< span style ="">      选择Case rowsFound


         Caso 0'Nenhum Registro ENCONTRADO


            MessageBox.Show(_


           " Nenhum Registro Correspondentes FORAM Encontrados",_


  ;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;" Nenhum Registro ENCONTRADO" ;, _


         ;    MessageBoxButtons.OK,_


            MessageBoxIcon.Exclamation)


&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBS磷;&NBSP;&NBSP; Caso 1


            ",QueformamVocê。 mostrar Depende fazer nomo fazobotão


< span style ="">            选择案例btnName


               Caso"btnSuppliersFind"


< span style ="">                  frmSuppliers.CompanyNameParameter = _


&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP ; filteredView.Item(0)(" CompanyName")


                 &NBSP; frmSuppliers.Show()


               Caso"btnCustomersFind"


< span style ="">                  frmCustomerDetails.CompanyNameParameter = _


&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP ; filteredView.Item(0)(" CompanyName")


                 &NBSP; frmCustomerDetails。 show()


           结束选择


         Case Else


            dlgPickMatchingCompany.FilteredView = filteredView


           昏暗的结果As DialogResult


            Resultado = dlgPickMatchingCompany.ShowDialog()


< span style ="">             Seo Resultado para DialogResult.OK entao


               Dim rowView Como Data.DataRowView


               rowView = dlgPickMatchingCompany.lbMatching.SelectedItem


< span style ="">                Dim companyName As String = rowView。 Row.Item(" CompanyName")



  &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; "QueformaVocê。 mostrar Depende fazer nomo fazobotão


< span style ="">               选择案例btnName


                  Caso"btnSuppliersFind"


< span style ="">                     frmSuppliers.CompanyNameParameter = _


&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP ;&NBSP;&NBSP;&NBSP; filteredView.Item(0)(" CompanyName")


                 &NBSP;&NBSP;&NBSP;&NBSP; frmSuppliers.Show)(


                  Caso" btnCustomersFind"


<跨度风格= "">&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; frmCustomerDetails.CompanyNameParameter = _


&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP ;  filteredView.Item(0)(" CompanyName")


            &n BSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; frmCustomerDetails.Show()


              结束选择


           结束如果


     结束选择


  结束子



 





'p>的铕montei一个primeira AULA做这份绿皮书,我在这山岛的Visual Studio 2013,E无COMANDO查找,NAO ESTA achando nenhum registro filtrado,JA revisei一个leitura ,énãestouconseguindo observar onde estou errando。  



  &NBSP; &NBSP; Dim rowsFound Como Int32 = filteredView.Count



     选择案例行创建 

         Caso 0'Nenhum Registro ENCONTRADO 

            MessageBox.Show(_&NBSP;

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;" Nenhum Registro Correspondentes有孔虫Encontrados" ;, _&NBSP;

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;" ; Nenhum Registro ENCONTRADO" ;, _&NBSP;

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; MessageBoxButtons .OK,_ 

            MessageBoxIcon.Exclamation)  





Hi Folks;

I have a list box which is populated with data using a filtered data view (just want the name of one column), and then allow users to select an entry from the list, click a corrosponding button, and with the button click event, opens another form and populates the form using a parameter (same one used to populate list box). The result set would be any/all columns returned based on the same parameter.

I have seperate click events for multiple buttons, which all perform the same basic action, with the exception that each button returns data from seperate tables. This works quite well, but...

I attempted to combine the seperate click events into one, and use case select to determine which button was clicked, and return the appropriate results.

The problem that occurs is after converting to a generic click event, the results only return the first row in the dataset, regardless of the list box selection.

I'm including a code snippet with the hopes that someone may be able to catch this issue for me!




Private Sub AllFindButtons(ByVal sender as system.object ByVal e as System.e.System.EventArgs)Handles btnSuppliersFind.click, btnCustomersfind.click

'cast sender as button type.
Dim btn as Button = CType(sender, Button)
Dim btnName as String = btn.Name

'determine text fields to use.
Dim text as string = string.empty
Dim table as System.Data.DataTable = Nothing

'Which text box and data table filter to use.
Select Case btnName
   Case "btnSuppliersFind"
      text = txtSuppliersName.Text
      table =NorthwindDataSet.Suppliers
   Case "btnCustomersFind"
      txt = txtCustomerName.Text
      table = NorthwindDataSet.Customers
End Select

Dim filteredview as Data.DataView = New Data.DataView(table)

' this row filter generalized
      filteredView.RowFilter = "CompanyName Like '%" + text + "%'"

      Dim rowsFound As Int32 = filteredView.Count

      Select Case rowsFound
         Case 0  ' no records found
            MessageBox.Show( _
            "No matching records found", _
            "No records found", _
            MessageBoxButtons.OK, _
            MessageBoxIcon.Exclamation)
         Case 1
            'which form you show depends on the button name
            Select Case btnName
               Case "btnSuppliersFind"
                  frmSuppliers.CompanyNameParameter = _
                     filteredView.Item(0)("CompanyName")
                  frmSuppliers.Show()
               Case "btnCustomersFind"
                  frmCustomerDetails.CompanyNameParameter = _
                     filteredView.Item(0)("CompanyName")
                  frmCustomerDetails.Show()
            End Select
         Case Else
            dlgPickMatchingCompany.FilteredView = filteredView
            Dim result As DialogResult
            result = dlgPickMatchingCompany.ShowDialog()
            If result = DialogResult.OK Then
               Dim rowView As Data.DataRowView
               rowView = dlgPickMatchingCompany.lbMatching.SelectedItem
               Dim companyName As String = rowView.Row.Item("CompanyName")

               ' which form you show depends on the button name
               Select Case btnName
                  Case "btnSuppliersFind"
                     frmSuppliers.CompanyNameParameter = _
                        filteredView.Item(0)("CompanyName")
                     frmSuppliers.Show()
                  Case "btnCustomersFind"
                     frmCustomerDetails.CompanyNameParameter = _
                        filteredView.Item(0)("CompanyName")
                     frmCustomerDetails.Show()
               End Select
            End If
      End Select
   End Sub

 

解决方案

Oi Gente, Eu Tenho UMA Caixa de Listagem, Opaco E preenchido com Dados usando UMA exibição de Dados filtrada (assim Quero o nomo de UMA Coluna), e entao permitir Opaco OS USUÁRIOS selecionem UMA Entrada da Lista, clique los hum Botão corrosponding, e com o clique de Botão Evento, abra Outro Formulário e preenche o Formulário usando hum Parâmetro (MESMO USADO parágrafo preencher a Caixa de Lista). O Conjunto de Resultados Seria QUALQUÉR / Todas como Colunas retornadas com base de nenhum Parâmetro MESMO. Tenho camarilha los eventos A Separados VÁRIOS parágrafos BOTOES, Opaco Todos desempenham um MESMA Ação Básica, com a ressalva de Opaco CADA Botão Retorna Dados de Tabelas separadas. de Isso Funciona Muito Bem, mas ... eu tentei combinar OS eventos de camarilha Separados los hum assim, e USAR Caso selecione Para determinar quali Botão FOI clicado, e retornar OS RESULTADOS apropriados. Opaco O Problema ocorre E apos uma Conversão parágrafo hum bando de Evento Genéricos, Os Resultados Só retornar a Primeira Linha do Conjunto de Dados, independentemente de uma Seleção da Caixa de Lista. ESTOU incluíndo hum Trecho de Código com a Esperança de Opaco alguem PODE Ser Capaz de Pegar ESSE Problema par mim!













btnCustomersfind.click 'remetente elenco Como o Tipo de Botão. Dim btn Como Botão = CType (remetente, Button) Dim btnName Como String = btn.Name 'determinar OS campos de Texto para USAR. Dim Texto corda Como = vazio Sistema Como mesa Dim . dados. DataTable = Nothing 'Qual Caixa de texto e Filtro de Tabela de Dados do Pará USAR. Select Case btnName    Caso "btnSuppliersFind"       text = txtSuppliersName.Text       table = NorthwindDataSet.Suppliers    Caso "btnCustomersFind"       txt = txtCustomerName.Text       table = NorthwindDataSet.Customers End Select Dim filteredview Como Data.DataView = Novo Data.DataView (Tabela) "este Filtro de Linha generalizada       filteredView.RowFilter = "CompanyName Like '%" + Texto + "%'"






















      Dim rowsFound Como Int32 = filteredView.Count

      Select Case rowsFound
         Caso 0 'Nenhum Registro ENCONTRADO
            MessageBox.Show (_
            "Nenhum Registro Correspondentes FORAM Encontrados", _
            "Nenhum Registro ENCONTRADO", _
            MessageBoxButtons.OK, _
            MessageBoxIcon.Exclamation)
         Caso 1
            ", Que formam Você. mostrar Depende fazer nomo faz o botão
            Select Case btnName
               Caso "btnSuppliersFind"
                  frmSuppliers.CompanyNameParameter = _
                     filteredView.Item (0) ("CompanyName")
                  frmSuppliers.Show ()
               Caso "btnCustomersFind"
                  frmCustomerDetails.CompanyNameParameter = _
                     filteredView.Item (0) ("CompanyName")
                  frmCustomerDetails. show ()
            End Select
         Case Else
            dlgPickMatchingCompany.FilteredView = filteredView
            Dim result As DialogResult
            Resultado = dlgPickMatchingCompany.ShowDialog ()
            Se o Resultado para DialogResult.OK entao
               Dim rowView Como Data.DataRowView
               rowView = dlgPickMatchingCompany.lbMatching.SelectedItem
               Dim companyName As String = rowView. Row.Item ("CompanyName")

               "Que forma Você. mostrar Depende fazer nomo faz o botão
               Select Case btnName
                  Caso "btnSuppliersFind"
                     frmSuppliers.CompanyNameParameter = _
                        filteredView.Item (0) ("CompanyName")
                     frmSuppliers.Show) (
                  Caso "btnCustomersFind"
                     frmCustomerDetails.CompanyNameParameter = _
                        filteredView.Item (0) ("CompanyName")
                     frmCustomerDetails.Show ()
               End Select
            End If
      End Select
   End Sub

 

Eu montei a primeira aula do livro, estou usando Visual Studio 2013, é no comando FIND, não está achando nenhum registro filtrado, já revisei a leitura, é não estou conseguindo observar onde estou errando.  

      Dim rowsFound Como Int32 = filteredView.Count

      Select Case rowsFound 
         Caso 0 'Nenhum Registro ENCONTRADO 
            MessageBox.Show (_ 
            "Nenhum Registro Correspondentes FORAM Encontrados", _ 
            "Nenhum Registro ENCONTRADO", _ 
            MessageBoxButtons.OK, _ 
            MessageBoxIcon.Exclamation) 


这篇关于将列表框选择绑定到数据网格的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆