我是ASP.net的新手,在使用sqldatasource和listview插入并显示SQL服务器db的结果后,我想尝试使用LINQ数据源,因为它似乎在代码隐藏方面更灵活。 我的问题是:我将listview控件下载到页面,然后使用vb在codebehind中创建了Linq数据源。我遇到的问题..选择d.columms名称我得到错误system.string不包含名称为“columname”的属性..如果我省略列名称然后它工作正常..有趣的部分是d.count工作正常但在那之后我得到错误..请看下面的代码:
vb代码
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim rowsCount As Integer
Dim showSearchForm As String
showSearchForm = Request.QueryString("tab")
If showSearchForm = "1" Then
Dim db As New ASPNETDBDataContext()
Dim q = From b In db.PassengerVehiclesTables Select b.dbMake
rowsCount = q.Count
MsgBox(rowsCount)
lvMakes.DataSource = q
lvMakes.DataBind()
PnlPassengerVehiclesSearch.Visible = True
ElseIf showSearchForm = "2" Then
aspx代码
<asp:Panel ID="PnlPassengerVehiclesSearch" Visible="false" runat="server">
Search Passenger Vehicles Form.....<br />
<table style="width: 100%; border-style: solid; border-width: 1px">
<tr>
<td>
<asp:ListView ID="lvMakes" runat="server">
<LayoutTemplate>
<asp:PlaceHolder runat="server" ID="itemPlaceholder" />
</LayoutTemplate>
<ItemTemplate>
<%#Eval("dbMake")%><br />
</ItemTemplate>
</asp:ListView>
</td>
b.dbMake需要工作,以便我可以使用Distinct,我使用asp.net版本:3.5和IIS版本7.0 .. 不知道我错过了什么,但我确实尝试了很多方法,1-检查了web.config文件,它似乎有两个程序集和两个名称空间用于LINQ..2-使用不同的数据绑定语法,我搜索很多解决方案..最后一个我读的人列出了列的名称,我认为这不是最好的解决方案..也是我的dbMake列在“intellisence”中出现.. 提前谢谢你的帮助..
答案 0 :(得分:1)
更改以下内容
Dim q = From b In db.PassengerVehiclesTables Select b.dbMake
到
Dim q = From b In db.PassengerVehiclesTables Select New With {b.dbMake}
有关详细说明,请参阅Select new keyword combination
答案 1 :(得分:0)
原因是您在查询中选择dbMake
,因此此行的返回是字符串的集合:
Dim q = From b In db.PassengerVehiclesTables Select b.dbMake
如果您将其更改为:
Dim q = From b In db.PassengerVehiclesTables Select b
您的Eval
将开始运作。它将查询比您需要的更大的数据集,但您的绑定将准确发生。