我已经得到了给定的代码:
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();
}
<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
我错了吗?还是有一种奇怪的行为?
答案 0 :(得分:1)
试试这个
<%# Eval("DUREE") == DBNull.Value ? <%# Eval("DUREE").GetType().ToString() %> : "NULL" %>
或只是
<%# Eval("DUREE") == DBNull.Value ? "System.DBNull" : "NULL" %>
而是使用&lt;%#Eval(“DUREE”)。GetType()。ToString()%&gt;和“NULL”你可以添加html
请参阅此处有关在if语句中使用Eval的信息 eval in if statement?
您可以将代码用于2个标签,并将Visible
属性与Eval
<asp:SqlDataSource ID="SqlDataSource" runat="server"></asp:SqlDataSource>
<asp:ListView ID="List" runat="server">
...
<asp:Label ID="Label6" runat="server" Text='NULL' Visible='<%# Eval("DUREE") == DBNull.Value %>'></asp:Label>
<asp:Label ID="Label8" runat="server" Text='<%# Eval("DUREE").GetType() %>' Visible='<%# Eval("DUREE") != DBNull.Value %>'></asp:Label>