【发布时间】:2016-03-11 10:56:01
【问题描述】:
我有一个包含四个对象的简单表单:两个 TextBoxes、一个 DataGridView 和一个 Button。通过该按钮,我从这些对象的 SQL 数据库中加载了一些数据。该表有两个字段,一个文本字段(“MyOtherTextField”)和一个时间字段(“MyTimeField”)。我为绑定编写的代码如下:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim m_dt As DataTable
Dim m_da As SqlClient.SqlDataAdapter
Dim m_cn As SqlClient.SqlConnection
Dim m_SelectCmd As SqlClient.SqlCommand
Dim m_InsertCmd As SqlClient.SqlCommand
Dim m_UpdateCmd As SqlClient.SqlCommand
Dim m_DeleteCmd As SqlClient.SqlCommand
Dim m_bmb As BindingManagerBase
m_dt = New DataTable
m_cn = New SqlClient.SqlConnection("My SQL Connection")
m_SelectCmd = New SqlClient.SqlCommand("My Command String ", m_cn)
m_SelectCmd.CommandTimeout = 500
m_da = New SqlClient.SqlDataAdapter(m_SelectCmd)
m_da.Fill(m_dt)
If m_dt.Rows.Count = 0 Then
TextBox3.DataBindings.Clear()
TextBox1.DataBindings.Clear()
TextBox3.DataBindings.Add("text", m_dt, "MyTimeField")
TextBox1.DataBindings.Add("text", m_dt, "MyOtherTextField")
TextBox3.Text = " "
TextBox1.Text = " "
Else
TextBox3.DataBindings.Clear()
TextBox1.DataBindings.Clear()
TextBox3.DataBindings.Add("text", m_dt, "MyTimeField")
TextBox1.DataBindings.Add("text", m_dt, "MyOtherTextField")
End If
m_bmb = BindingContext(m_dt)
Dim CmdBuilder As SqlClient.SqlCommandBuilder = New SqlClient.SqlCommandBuilder(m_da)
m_InsertCmd = CmdBuilder.GetInsertCommand
m_UpdateCmd = CmdBuilder.GetUpdateCommand
m_DeleteCmd = CmdBuilder.GetDeleteCommand
m_da.InsertCommand = m_InsertCmd
m_da.UpdateCommand = m_UpdateCmd
m_da.DeleteCommand = m_DeleteCmd
' DataGridView column setup
MyDataGridView.DataSource = Nothing
With MyDataGridView
.AutoGenerateColumns = False
.ColumnCount = 2
.Columns(0).DataPropertyName = "MyOtherTextField"
.Columns(0).HeaderText = "Other Text Field Header Text"
.Columns(0).Width = 165
.Columns(1).DataPropertyName = "MyTimeField"
.Columns(1).HeaderText = "Time Field Header Text"
.Columns(1).Width = 90
End With
MyDataGridView.DataSource = m_dt
m_cn.Close()
End Sub
数据加载工作,编辑数据工作在 DataGridView 和 TextBox1(与 SQL 表的文本字段关联的那个),但不是在链接到时间字段的 TextBox 中。因此,如果我通过 TextBox1 编辑字段 MyOtherTextField,它会正确更新该记录,但通过 TextBox3 的 MyTimeField 不会发生同样的事情。我做错了什么?
谢谢。
【问题讨论】:
-
“myTimeField”的列类型是什么?
标签: sql-server vb.net datagridview textbox