数据绑定:& # 39;System.Data.DataRowView& # 39;不包含名称为'AddDate
本文关键字:AddDate 包含名 Data System 数据绑定 DataRowView | 更新日期: 2023-09-27 17:54:03
我在ASP中面临一个问题。NET应用程序,目前正在生产中。我使用的是SQL Server 2008数据库和IIS 7.0.
我的问题是:我的网站运行得很好一段时间,但过了一段时间后,它抛出了"一个unhandledexception"。Exception消息如下
数据绑定:"System.Data。DataRowView'不包含名为'AddDate'的属性。
但是,数据库中有一个名为'AddDate'的字段。
这个异常是随机发生的,过了一段时间,网站又正常运行了,或者当我回收应用程序池
我无法找出这种行为的原因。
请在这方面帮助我。提前感谢....
HTML代码:
<asp:Repeater ID="rptrNewsTitles" runat="server">
<ItemTemplate>
<li class="news-item"><font style="font: 11px 'verdana'; color:#b5202b"><%#(Convert.ToDateTime(Eval("AddDate")).ToUniversalTime().Equals(DateTime.Now.ToUniversalTime())) ? " " + Convert.ToDateTime(Eval("AddDate")).ToUniversalTime().ToShortTimeString() : " " + Convert.ToDateTime(Eval("AddDate")).ToString("dd MMM yyyy")%> : </font><a href='showsubject.aspx?id=<%# Eval("subjectid")%>' style="text-decoration:none;"><%#Eval("SubjectTitle") %></a></li>
</ItemTemplate>
</asp:Repeater>
c#代码:
DataTable dt = new DataTable();
dt = ControlsDB.GetTableFromProc("GetNewsTitles", new string[] { "@Lang" }, new SqlDbType[] { SqlDbType.NVarChar }, new object[] { "En" }, conn);
rptrNewsTitles.DataSource = dt;
rptrNewsTitles.DataBind();
过程返回的字段:
SubjectID, SubjectTitle, SubjectDetails, AddDate, Category, ViewsNo, adddedby, Tip, Active, SubjectLanguage, Photo, SubjectBrief, HotNews, Country, CountryID, CountryName, CountryComment, CountryFlag, Code, Active, Lang
谢谢
有很多可能性。以下是一些:
-
如果你的过程有复杂的逻辑,包括If - then - else逻辑,你可能会偶尔执行一个SELECT,省略该字段,或者给它一个不同的别名。
-
如果
ControlsDB.GetTableFromProc
通过首先实例化(新建)DataTable
然后从SqlDataAdapter
填充它来工作,这似乎是一种常见的做法,有可能由于任何原因(由于数据库锁导致的超时是一种很可能的可能性)表没有从进程中填充,但该方法仍然返回DataTable
。这将给您一个没有列的DataTable
,如果您试图绑定它,肯定会抛出这个错误。为了做到这一点,你需要捕捉和抑制SQL错误,将发生在
SqlDataAdapter.Fill
,但仍然返回DataTable
。