![](/img/trans.png)
[英]Conversion from type 'DBNull' to type 'Integer' is not valid. using asp.net and object data source
[英]Conversion from type 'DBNull' to type 'String' is not valid. clickable data
我是aspx編程的新手。 我面臨的問題是我提取的數據包含空值。 我的代碼:
<asp:TemplateField HeaderText="NCRE" ItemStyle-Width="150px" >
<ItemTemplate>
<asp:Hyperlink ID="Hyperlink1" runat="server" Text='<%# Eval("formid") %>' NavigateUrl='<%# Eval("formid","~/sapphire/ncrr" + Mid(Eval("formid"), 4, 1) + ".aspx?formid={0}") %>' />
</ItemTemplate>
</asp:TemplateField>
我的代碼后面:
Protected Function geturl(value As Object) As String
Dim NCRE As String = Convert.ToString("formid")
If Mid(NCRE, 4, 1) = 2 Then
Return ("~/sapphire/ncrr2.aspx")
Else
Return ("~/sapphire/ncrr1.aspx")
End If
End Function
為了幫助您從我鏈接的帖子中獲得正確的代碼:
將此部分復制到您的代碼文件中(以aspx.cs
結尾):
Public Function ProcessMyDataItem(myValue As Object) As String
If myValue Is Nothing OrElse myValue = DbNull.Value Then
Return "(no value)"
End If
Return myValue.ToString()
End Function
在您的.aspx
:
<asp:TemplateField HeaderText="NCRE" ItemStyle-Width="150px" >
<ItemTemplate>
<asp:Hyperlink ID="Hyperlink1" runat="server" Text='<%# ProcessMyDataItem(Eval("formid")) %>' NavigateUrl='<%# Eval("formid","~/sapphire/ncrr" + Mid(ProcessMyDataItem(Eval("formid")), 4, 1) + ".aspx?formid={0}") %>' />
</ItemTemplate>
</asp:TemplateField>
您可以使用IIf
( IIf(IsDBNull(Eval("fieldName")) = True, *do what You want when record is empty*, *do what You want when record isn't empty)
)。
有例子:
Text = '<%# IIf(IsDBNull(Eval("formid")) = True, "no data", Eval("formid))%>'
您可以將相同的代碼用於NavigateUrl
:
NavigateUrl = '<%# IIf(IsDBNull(Eval("formid")) = True, "#", Eval("formid","~/sapphire/ncrr" + Mid(Eval("formid"), 4, 1) + ".aspx?formid={0}"))'
然后,在您的函數geturl
(后面的代碼)中,首先檢查是否為value
,例如#
(什么都不做,或者只是返回空),否則執行代碼。
您只能添加一個空字符串來避免該錯誤:
昏暗的NCRE作為字符串= Convert.ToString(“ formid”)&“”
或者,為避免在第4個位置出現錯誤:
Dim NCRE As String = Convert.ToString(“ formid”)&“”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.