DataBinding:'System.String'不包含名为'dbMake'的属性

时间:2010-01-25 21:13:32

标签: asp.net vb.net

我是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”中出现.. 提前谢谢你的帮助..

2 个答案:

答案 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将开始运作。它将查询比您需要的更大的数据集,但您的绑定将准确发生。