【发布时间】:2014-01-11 16:59:00
【问题描述】:
我有给定的代码:
文件.ascx.cs
protected void Page_Load(object sender, EventArgs e)
{
SqlDataSource.SelectCommand = @"SELECT reu.duree_minutes as DUREE
FROM z_reunions reu"
List.DataSourceID = "SqlDataSource";
List.DataBind();
}
文件.ascx
<asp:SqlDataSource ID="SqlDataSource" runat="server"></asp:SqlDataSource>
<asp:ListView ID="List" runat="server">
...
<%if (Convert.IsDBNull("DUREE"))
{ %>
<asp:Label ID="Label6" runat="server" Text='NULL' ></asp:Label>
<%} else { %>
<asp:Label ID="Label8" runat="server" Text='<%# Eval("DUREE").GetType() %>'></asp:Label>
<%} %>
我得到了以下输出:
System.DBNull
System.DBNull
System.DBNull
System.DBNull
System.Int32
System.Int32
但我希望它是:
NULL
NULL
NULL
NULL
System.Int32
System.Int32
我错了吗?还是有什么奇怪的行为?
【问题讨论】:
-
字符串
"DUREE"永远不会等于DBNull。你的意思是if (Convert.IsDBNull(Eval("DUREE"))? -
您正在检查字符串类型的对象是DBNull,这是错误的。
-
@Samoth 再次阅读了我的评论。你永远不会在
if,总是在else。 -
因为 Eval("DUREE") 为你所说的 Eval 返回行的“DUREE”列的值
-
@CodeCaster 你编辑了它;)我测试过,它抛出这个
System.InvalidOperationException