【问题标题】:Filling a TableAdapter from Bound ToolStripComboBox从绑定 ToolStripComboBox 填充 TableAdapter
【发布时间】:2014-01-05 01:04:30
【问题描述】:

我正在尝试根据来自 ToolStripComboBox 的选择来填充 TableAdapter。 首先,我想通过将 ToolStipComboBox 绑定到数据源来填充它。然后一旦它被填充,我想填充 TableAdapter。

这是我的代码:

Private Sub ToolStripComboBox_MessageType_Click(sender As Object, e As EventArgs) Handles ToolStripComboBox_MessageType.Click
    Me.ToolStripComboBox_MessageType.ComboBox.DataSource = DataSet_UToolDb.XML_MESSAGE_TYPE
    Me.ToolStripComboBox_MessageType.ComboBox.DisplayMember = "MessageType"
    Me.ToolStripComboBox_MessageType.ComboBox.ValueMember = "MTId"
End Sub

Private Sub ToolStripComboBox_MessageType_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ToolStripComboBox_MessageType.SelectedIndexChanged
    Me.TableAdapter_XML_MESSAGE_STRUCTURE.Fill(DataSet_UToolDb.XML_MESSAGE_STRUCTURE, Me.ToolStripComboBox_MessageType.ComboBox.SelectedValue)
End Sub

由于某种原因(如果我单步执行我的代码),代码会从设置数据源的位置跳转到填充 TableAdapter 的位置。这会导致异常,因为 TableAdapter 的选择查询正在查找基于从 ToolStipComboBox 中选择的值的值。

【问题讨论】:

    标签: vb.net datasource tableadapter toolstripcombobox


    【解决方案1】:

    我怀疑您的代码正在跳转到填充 TableAdapter 的位置,因为通过设置 ComboBox 的 DataSource 会导致触发 SelectedIndexChanged 事件。

    因此,如果 ToolStripComboBox 尚未填充,您需要告诉 SelectedIndexChanged 处理程序返回,您可以通过在填充 ToolStripComboBox 时设置布尔标志来做到这一点。例如:

    Dim m_ToolStripComboBoxPopulated As Boolean
    
    Private Sub ToolStripComboBox_MessageType_Click(sender As Object, e As EventArgs) Handles ToolStripComboBox_MessageType.Click
        Me.m_ToolStripComboBoxPopulated = False
        Me.ToolStripComboBox_MessageType.ComboBox.DataSource = DataSet_UToolDb.XML_MESSAGE_TYPE
        Me.ToolStripComboBox_MessageType.ComboBox.DisplayMember = "MessageType"
        Me.ToolStripComboBox_MessageType.ComboBox.ValueMember = "MTId"
        ' Indicate ToolStripComboBox has been populated
        Me.m_ToolStripComboBoxPopulated = True
    End Sub
    
    Private Sub ToolStripComboBox_MessageType_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ToolStripComboBox_MessageType.SelectedIndexChanged
        If (Me.m_ToolStripComboBoxPopulated = False) Then
            Return
        End If
        Me.TableAdapter_XML_MESSAGE_STRUCTURE.Fill(DataSet_UToolDb.XML_MESSAGE_STRUCTURE, Me.ToolStripComboBox_MessageType.ComboBox.SelectedValue)
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-22
      • 2011-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-24
      相关资源
      最近更新 更多