如何在BindingNavigator上启用AddNewItem

时间:2011-12-03 02:37:22

标签: vb.net bindingsource

我试图将BindingNavigator绑定到BindingSource。它工作得很好,但问题是黄色加号图标被禁用。如何启用它?

我手动使用数据集,tableadapters和bindingsource创建了代码,但是当我在bindingnavigator上绑定它时,它显示了记录,但它没有启用"删除"和"添加项目"。

我做错了什么?

评论代码:

Dim connstr As String = "Data Source=" + Application.StartupPath + "\Prueba.sdf"
Dim conn As New SqlCeConnection(connstr)
Dim cmd As New SqlCeCommand("SELECT * FROM datos", conn)
Dim inscmd As New SqlCeCommand("INSERT INTO datos VALUES (@nombre,@apellido,@id)", conn)
dt = New SqlCeDataAdapter(cmd)
dt.Fill(DataSet1, "datos")
dt.InsertCommand = inscmd
BindingSource1.DataSource = DataSet1
DataGridView1.DataSource = BindingSource1
DataGridView1.DataMember = "datos"
DataGridView1.Columns("id").Visible = False

2 个答案:

答案 0 :(得分:1)

由于您没有提供任何代码,因此您很难尝试解决问题。

这是一个有效的例子。获取新表单,在其上放置TextBoxBindingNavigator控件。

添加此代码:

Public Class Form1
  Private bs As New BindingSource
  Private ds As New DataSet
  Private dt As New DataTable

  Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    dt.TableName = "English"
    dt.Columns.Add("Words")
    dt.Rows.Add("Hello")
    dt.Rows.Add("Good-Bye")
    ds.Tables.Add(dt)
    bs.DataSource = ds
    bs.DataMember = "English"
    TextBox1.DataBindings.Add("Text", bs, "Words")
    BindingNavigator1.BindingSource = bs
  End Sub
End Class

TextBox中应包含“Hello”。 BindingNavigator上应该有“1 of 2”,加上“添加”和“删除”按钮应启用并正常工作。

如果这无法解决问题,则必须发布一些代码以帮助我们重现问题。

答案 1 :(得分:0)

为了好玩,我在表单上添加了第二个文本框,在表格中添加了第二列,并为两个记录填充了两个字段。

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    dt.TableName = "English"
    dt.Columns.Add("Words")
    dt.Columns.Add("Spanish")
    dt.Rows.Add("Hello", "Hola")
    dt.Rows.Add("Good-Bye", "Adios")
    ds.Tables.Add(dt)
    bs.DataSource = ds
    bs.DataMember = "English"
    TextBox1.DataBindings.Add("Text", bs, "Words")
    TextBox2.DataBindings.Add("Text", bs, "Spanish")
    BindingNavigator1.BindingSource = bs
End Sub