我是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
答案 0 :(得分:1)
帮助您从the post I've linked获取正确的代码:
将此部分复制到您的代码文件中(以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>
答案 1 :(得分:0)
您可以使用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
,例如#
(什么都不做,或者只返回空),否则执行代码。< / p>
答案 2 :(得分:0)
您只能添加一个空字符串以避免错误:
Dim NCRE As String = Convert.ToString(&#34; formid&#34;)&amp; &#34;&#34;
或者,为避免在第4位发生错误:
Dim NCRE As String = Convert.ToString(&#34; formid&#34;)&amp; &#34; &#34;