我不确定是否提出这个问题(如果需要我会编辑)。
基本上,我有一个 WPF应用程序。在应用程序中是 DataGrid ,它绑定到 SQL表(通过数据集)。
此表中的一栏是“注意事项”。我创建的列是为了添加/删除可能会或可能不会很长的文本。
然后我发现从列中检索到的字符数量仅为50(此处有一个TextBox绑定到该特定列以显示其中的数据) - 因此,在此处仅显示最多50个字符的文本文本框。
经过一些阅读后,我发现列数据类型(当前 VARCHAR )设置为 VARCHAR(50) - 这是有道理的。
然后我将数据类型更改为 VARCHAR(MAX),更新数据集(反映了更改)并再次尝试 - 即使列的长度属性已经过,我得到相同的结果设置为最大值。
我已尝试过此专栏的其他数据类型,例如 TEXT & NVARCHAR(MAX) - 结果重命名为。
我甚至查看了TextBox的Length属性,这似乎没问题(默认情况下设置为0,因此我将其更改为100 - 行为没有变化)。
我真的很难过。应该这样吗?我错过了什么吗?我真的很感激一些见解。
[UPDATE]:
所以我玩了一下。我决定用很长的字符串更新SSMS中的列。然后我用DATALENGTH(column_name)拉了这个列,整个字符串的长度为272。
然后我在应用程序中检查了这一点。返回整个字符串。添加了几个字符以查看会发生什么。
不仅没有添加额外的字符,整个字符串被截断为100的长度。在SSMS中检查也是如此,结果相同。
现在我比以前更迷失了。但至少我知道问题不在于表格或列数据类型&长度。
[我如何阅读/写入数据]:
我的WPF应用程序有一个DataGrid。此DataGrid绑定到从SQL数据库配置的数据集。
当我在DataGrid中加倍一行时,会打开一个新窗口,并使用所选行的数据填充文本框/组合框。
在(新)Window_Loaded事件中,我引用了有问题的DataGrid。
Private Sub Window_Loaded(sender as Object, e As RoutedEventArgs)
Dim mainWindow = TryCast(Application.Current.Windows.Cast(of Window)().FirstOrDefault(Function(EditAsset) TypeOf EditAsset Is MainWindow), MainWindow)
Dim dgMainWindow As DataGrid = MainWindow.AssetsDataGrid
Dim row as Data.DataRowView = DirectCast(dgMainWindow.SelectedItems(0), Data.DataRowView)
Dim SelectedAssetTableAdapter As retailassetdbDatasetTableAdapters.tableAssetsTableAdapter = New retailassetdbTableAdapters.tableAssetsTableAdapter()
Dim SelectedAssetDataTable As New retailassetdbDataset.tableAssetsDataTable
SelectedAssetTableAdapter.FillBySelectedItem(SelectedAssetDataTable, row("Id"), row("assetSerial")
txtAsseetNotes.Text = SelectedAssetDataTable.Rows.Item(0)("assetNotes")
End Sub
因此,TextBox显示“资产注释”列的信息。
[保存到数据库]:
数据集有一个更新查询来更新特定条目(基于来自DataGrid的id& serial)。
Private Sub btnSaveChanges(sender As Object, e As RoutedEventArgs)
Dim SelectedAssetTableAdapter As retailassetdbDatasetTableAdapters.tableAssetsTableAdapter = New retailassetdbTableAdapters.tableAssetsTableAdapter()
Dim SelectedAssetDataTable As New retailassetdbDataset.tableAssetsDataTable
SelectedAssetTableAdapter.UpdateAsset(txtAssetNotes.Text, assetSerial, assetID)
End Sub
这会将数据保存回数据库。
[编辑]:
以下是一些属性的图片:
答案 0 :(得分:0)
Ok, so I am feeling like a complete idiot at the moment.
After thinking I have been thorough in trying to determine WHERE the problem lies, I overlooked 1 thing:
THE UPDATE STATEMENT OF THE DATASET!
Even I reconfigured the Dataset with the new properties of the database/table, I left Update Statement as is. So I am thinking the old Update statement was referencing old parameters when doing the update?
Anyway, I created a Test Update Statement on the newly configured Dataset and tried it out. It works!
Thanks to all for the replies.