我在每次刷新时都会在页面上出现非常奇怪的错误,但不是每次都有。
我有一个简单的页面打印出如下数据:
后端(aspx.cs)
string sql="Select * from content_mgr_multiple where category = '1' limit 0, 1";
DataView dv = DBAccess.GetListView(sql);
this.ResultList.DataSource = dv;
this.ResultList.DataBind();
前端(C ++)
<asp:Repeater ID="ResultList" runat="server">
<ItemTemplate>
<%# Eval("content") %>
</ItemTemplate>
</asp:Repeater>
代码的工作方式与上面一样简单,但每次刷新都会显示以下错误。 DataBinding:'System.Data.DataRowView'不包含名称为'content'的属性。
假设我刷新页面6次。第2次,第4次和第6次都很好,但是第1次,第3次和第5次显示错误。
我尝试按照以下方式排查问题。我将代码打印出该DataSource中的列名。
string sql="Select * from content_mgr_multiple where category = '1' limit 0, 1";
DataView dv = DBAccess.GetListView(sql);
foreach (DataColumn dr in dv.Table.Columns)
{
Response.Write(dr.ColumnName + "<BR>");
}
this.ResultList.DataSource = dv;
this.ResultList.DataBind();
在第2次,第4次和第6次刷新时,列名称将以英文打印出来。
id
category
title
titleCh
content
contentCh
在第1次,第3次和第5次刷新时,列名将以中文打印出来。
楤
捡瑥杯特
瑩瑬�
瑩瑬敃�
捯湴敮�
捯湴敮瑃�
我已经打了一段时间,请帮忙。感谢。
答案 0 :(得分:1)
非常感谢你们的关心。最后,我找到了导致它的原因。正如eggyal指出的那样,它让我意识到数据库出了问题。
我有content_mgr类别表,它也持有中文标题。在该类别表中,中文字段创建为“ucs2_general_ci”。一旦我将其更改为“utf8_general_ci”,问题就解决了。