【发布时间】:2023-03-14 04:35:01
【问题描述】:
我有一个大约 20 列的 SQL 表。我想从中提取 3 列并在我的前端 WPF 应用程序中填充一个数据网格。到目前为止,这是我的代码。
Private Sub AccountSelectorDialogue_load(ByVal sender As Object, ByVal e
As EventArgs) Handles MyBase.Loaded
Try
Dim context As MyDatabase = New MyDatabase
Dim qry_Accounts = From accounts In context.tbl_Accounts
Order By accounts.AccName
Select {accounts.AccName, accounts.AccPhone, accounts.ParentAcc}
Dim results = qry_Accounts.ToList()
AccountDataGrid.DataContext = results
Catch ex As Exception
MessageBox.Show("Error while selecting record from table..." & ex.Message, "Select Records")
MessageBox.Show(ex.InnerException.Message)
End Try
End Sub
当我加载数据网格时,我得到this 异常和this 内部异常。我觉得我错过了一些基本的东西,但我没有看到它。
编辑:当我像这样编写Select 行并删除results 变量时,异常消失了。
Select {accounts.AccName, accounts.AccPhone, accounts.ParentAcc}.ToList()
AccountDataGrid.DataContext = qry_Accounts
但是,数据网格仍然没有显示任何内容。
编辑 2:使用 ItemsSource 而不是 DataContext。现在数据网格显示了正确的行数 - 但它们是空的......
编辑 3:盯着我的屏幕几个小时后,我认为这可能是我的 xaml。最初我认为我不必绑定我的列。如果我确实需要,我不知道如何在这种情况下。
<DataGrid x:Name="AccountDataGrid" ItemsSource="{Binding}"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="480"
MinHeight="200" VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Auto" AutoGenerateColumns="False"
Background="Transparent" >
<DataGrid.Columns>
<DataGridTextColumn x:Name="AccountName" Binding="
{Binding AccName}" Header="Account Name" Width="Auto" MinWidth="180"/>
<DataGridTextColumn x:Name="PhoneNumber" Binding="
{Binding AccPhone}" Header="Phone" Width="Auto" MinWidth="150"/>
<DataGridTextColumn x:Name="AccountOwnerAlias"
Binding="{Binding ParentAcc}" Header="Account Owner Alias" Width="Auto"
MinWidth="150"/>
</DataGrid.Columns>
</DataGrid>
【问题讨论】:
-
{accounts.AccName, accounts.AccPhone, accounts.ParentAcc} 的类型是什么。我猜 ParentAcc 是一个导航属性,而不是一个标量值。
-
都是字符串(数据库中的nchar)
-
这一行对我来说看起来很奇怪~Dim context As MyDatabase = New MyDatabase~ 我们可以看到你的 DBContext 的代码吗?你是如何发送连接字符串的?
-
MyDatabase 是我使用实体框架自动创建的数据访问类的名称。我怀疑那里有问题 - 我还有许多其他查询工作正常......
标签: wpf vb.net entity-framework linq datagrid