【发布时间】:2016-07-08 04:39:41
【问题描述】:
我的网站存在这个主要问题。因此,我多次检查了我所有的代码,但看起来一切都很好。
例如在this page 上显示此错误
DataBinding: 'System.Data.DataRowView' does not contain a property with the name 'chemistID'.
我检查了我的表列名称,它是相同的。另外在代码中我检查了列名是否正确。我签入了 Listview 代码,它是正确的。仍然显示错误。以下是我的 ListView 和数据绑定代码。
<asp:ListView ID="chemists" runat="server" DataKeyNames="chemistID" DataKey="chemistID">
<ItemTemplate>
<!--list-content-blocks-starts--><div class="list-content-blocks">
<!--list-data-starts--><div class="list-data">
<!--head-title-starts--><div class="head-title">
<h3><asp:HyperLink ID="name" runat="server" NavigateUrl='<%# "chemist-details?chemistID=" + Eval("chemistID").ToString() %>' Text='<%# Eval("name") %>'>HyperLink</asp:HyperLink></h3>
<div class="list-address">
<asp:Label ID="address" runat="server" Text='<%# Eval("address") %>'></asp:Label>
<%--<asp:Label ID="street" runat="server" Text= '<%# Eval("streetName") %>'></asp:Label>,
<asp:Label ID="area" runat="server" Text= '<%# Eval("areaName") %>'></asp:Label>,
<asp:Label ID="city" runat="server" Text= '<%# Eval("city") %>'></asp:Label>,
<asp:Label ID="zip" runat="server" Text= '<%# Eval("zipCode") %>'></asp:Label>.--%>
</div>
</div><!--head-title-ends-->
<div class="clear"></div>
<!--content-in-starts--><div class="content-in">
<!--contenr-dp-starts--><div class="content-dp">
<img id="thumbnail" runat="server" src='<%# Eval("thumbnail") %>' />
</div><!--content-dp-ends-->
<!--content-other-details-starts--><div class="content-other-details">
<section class="known-for">
<ul class="bestFor">
<asp:Label ID="knownFor" runat="server" Text='<%# Eval("products")%>'></asp:Label>
<li class="showMore"><asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# "chemist-details?chemistID=" + Eval("chemistID").ToString() %>' Text="More"></asp:HyperLink></li>
</ul>
</section>
<!--list-time-starts--><div class="list-time">
<div class="list-time-inner">WORKING HOURS |
<asp:Label ID="opdFrom" runat="server" Text='<%# Eval("slot1From") %>'></asp:Label> To
<asp:Label ID="opdTo" runat="server" Text='<%# Eval("slot1To") %>'></asp:Label></div>
</div><!--list-time-ends-->
<%-- <!--list-time-starts--><div class="feesC">
<div class="fees-inner"><asp:Label ID="consulting" runat="server" Text='<%# Eval("consultancyFees") %>'></asp:Label> / Doctor</div>
</div><!--list-time-ends-->--%>
<!--sms-button-starts--><div class="sms-button">
<asp:Button ID="getSMS" CssClass="get-sms" runat="server" Text="Get SMS" />
</div><!--sms-button-ends-->
</div><!--content-other-details-ends-->
</div><!--content-in-ends-->
</div><!--list-data-ends-->
<!--rating-show-starts--><div class="rating-show">
<div class="rating-show-inner">
<div class="show-rating vote1"><asp:Label ID="lblRating" runat="server"></asp:Label></div>
<div class="show-votes"><asp:label ID="totalVotes" runat="server"></asp:label> <asp:Label ID="seeVote" runat="server" Text="Vote"></asp:Label></div>
</div>
<%--<div class="rating-show-inner">
<div class="show-rating rank1"><span>8</span></div>
<div class="show-votes">in Pune</div>
</div>--%>
</div><!--rating-show-ends-->
<div class="clear"></div>
</div><!--list-content-blocks-ends-->
</ItemTemplate>
<EmptyDataTemplate>
<div class="not-found">
<p>Sorry! Selected Query Not Found</p>
<center><img src="images/not-found.jpg"</center>
</div>
</EmptyDataTemplate>
<LayoutTemplate>
<ul id="itemPlaceholderContainer" runat="server" style="">
<li runat="server" id="itemPlaceholder" />
</ul>
</LayoutTemplate>
</asp:ListView>
<div class="datapager" style="padding-bottom: 10px;">
<asp:DataPager ID="DataPager1" runat="server" PageSize="10" PagedControlID="chemists" ViewStateMode="Enabled">
<Fields>
<asp:NextPreviousPagerField ButtonType="Link" ShowFirstPageButton="false" ShowPreviousPageButton="true"
ShowNextPageButton="false" />
<asp:NumericPagerField ButtonType="Link" />
<asp:NextPreviousPagerField ButtonType="Link" ShowNextPageButton="true" ShowLastPageButton="false" ShowPreviousPageButton="false" />
</Fields>
</asp:DataPager>
</div>
数据绑定代码
Private Sub chemists_PreRender(sender As Object, e As EventArgs) Handles Me.PreRender
chemists.DataSource = GetData()
chemists.DataBind()
End Sub
Private Function GetData() As Data.DataTable
Try
If Session("Data") IsNot Nothing Then
Return Session("Data")
Else
DataPager1.SetPageProperties(0, DataPager1.PageSize, False) 'reinit
Dim citySelector As Label = Page.Master.FindControl("locationPopupActivator")
Using con As New MySql.Data.MySqlClient.MySqlConnection(ConfigurationManager.ConnectionStrings("conio").ConnectionString)
Dim cmd As New MySql.Data.MySqlClient.MySqlCommand("SELECT chemistID, name, address, thumbnail, slot1From, slot1To, products FROM chemists where city like @city and status = 'active'", con)
cmd.CommandType = Data.CommandType.Text
cmd.Parameters.Add("@city", MySqlDbType.VarChar, 50).Value = citySelector.Text & "%" 'same as Session("masterLocation")
Dim table As New Data.DataTable()
Dim da As New MySql.Data.MySqlClient.MySqlDataAdapter(cmd)
da.Fill(table)
countItems.Text = table.Rows.Count().ToString
da.Dispose()
cmd.Dispose()
Session("Data") = table
Return table
End Using
End If
Catch ex As Exception
Response.Write(ex) 'for debug purpose
Return Nothing
End Try
End Function
【问题讨论】:
-
请不要在代码 sn-ps 之前发布大量空白。它只是让我们难以阅读。选择时使用 Alt 键可让您在任意位置选择代码块,从而排除所有行前的空格。
-
确保在“chemists”表中有一个名为“chemistID”的列。此外,您可以尝试保留 DataKeyNames 但去掉 DataKey 属性,看看是否有帮助。
标签: asp.net vb.net listview data-binding