helper function gives case error when called during datagrid binding

B

bhavin30

Hi Guys,
I have a quick question. I think code will explain it the best.
This is what I am doing for one of the columns during databinding on my
grid:

<asp:TemplateColumn>
<HeaderStyle HorizontalAlign="Center"></HeaderStyle>
<ItemStyle Font-Size="11px" Font-Names="Verdana"
HorizontalAlign="Center"></ItemStyle>
<HeaderTemplate>
<IMG src="images/detail_lineitems_invoice_no.gif" width="67"
height="18">
</HeaderTemplate>
<ItemTemplate>
<asp:HyperLink Font-Size="11px" ForeColor="Blue" Font-Underline=True
Font-Name="Verdana" Target="Invoice" Runat="server" NavigateUrl='<%#
CheckAppFlagDuringBinding(Container.DataItem("app_flag"),
Container.DataItem("invoice_id"))%>'>
<%# DataBinder.Eval(Container.DataItem, "invoice_no") %>
</asp:HyperLink>
</ItemTemplate>
</asp:TemplateColumn>


I basically check the flag in CheckAppFlagDuringBinding function, and
return a string value.
Here's the function:

Public Function CheckAppFlagDuringBinding(ByVal sAppFlag As String,
ByVal gInvoiceID As Guid) As String
Dim sPath As String

Try
If sAppFlag = "APW" Then
sPath = "http://nytimes.com"
ElseIf sAppFlag = "JE" Then
sPath = "http://cnet.com"
Else
sPath = "http://boston.com"
End If

Return sPath

Catch ex As Exception
HandleError(ex)
End Try

End Function

It is a very simple function. But when i run this code i get a cast
error: Cast from type 'DBNull' to type string. When i debug the code,
i can see that a string is passed from the function fine (and
correctly), but doesn't seem to 'stick' to the NavigationUrl property
of the column. The function gets called only one time (maybe because
there is only row in the dataset)

Do you know why this might be happening? Any help is really
appreciated. Thanks!!
 
K

Karl Seguin [MVP]

It seems like one of your values is null.

you need to change ur method slightly:

public function blah (appflag as object, gInvoiceID as Guid) as string
if appflag is nothing orelse appflag = DBNull.Value then
'what to do if it's a null?
else
dim sAppFlag as string = cstr(appFlag)
'rest of your code
end if
end function

Karl
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,764
Messages
2,569,565
Members
45,041
Latest member
RomeoFarnh

Latest Threads

Top