2014-01-11 2 views
1

У меня данный код:convert.isBDnull ("Foo") странное поведение

file.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(); 
} 

file.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> 
    <%} %> 

и я ve получил следующий результат:

System.DBNull 
System.DBNull 
System.DBNull 
System.DBNull 
System.Int32 
System.Int32 

Но ожидаю, что это будет:

NULL 
NULL 
NULL 
NULL 
System.Int32 
System.Int32 

Я не прав? Или странное поведение?

+1

Строка '«durée»' никогда не равна 'DBNull'. Вы имеете в виду 'if (Convert.IsDBNull (Eval (« DUREE »))?? – CodeCaster

+0

Вы проверяете объект типа string DBNull, это неправильно. –

+0

@Samoth снова прочитал мой комментарий. Вы никогда не попадаете в' if' , всегда в 'else'. – CodeCaster

ответ

1

Попробуйте

<%# Eval("DUREE") == DBNull.Value ? <%# Eval("DUREE").GetType().ToString() %> : "NULL" %> 

или просто

<%# Eval("DUREE") == DBNull.Value ? "System.DBNull" : "NULL" %> 

Вместо используя <% # Eval ("durée"). GetType(). ToString()%> и "NULL" вы можете добавить HTML

Смотрите здесь об использовании 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> 
+0

Ваше второе решение работает, но это привело меня к [этим] (http://stackoverflow.com/questions/21063861/check-is-evalvalue-is-null) вопросам –

Смежные вопросы