FormView FindControl on TextBox Returning Nulls

I am trying to reference three textboxes inside a formview to read their values and calculate a value to assign to a Label in the same formview. When I try to references any of the objects needed using the findcontrol method of the formview, it simply returns nulls (Object reference not set to an instance of an object).


Private Sub AllowanceFormView_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles AllowanceFormView.DataBound
        If AllowanceFormView.CurrentMode = FormViewMode.Edit Then
            Dim HalfYearlyCarryOverLabel As Label = AllowanceFormView.FindControl("EditHalfYearlyCarryOverLabel")
            Dim BroughtForwardTextBox As TextBox = AllowanceFormView.FindControl("BroughtForwardTextBox")
            Dim JulAmountVouchedTextBox As TextBox = AllowanceFormView.FindControl("JulAmountVouchedTextBox")
            Dim JulAllocationTextBox As TextBox = AllowanceFormView.FindControl("JulAllocationTextBox")
 
            HalfYearlyCarryOverLabel.Text = (CInt(BroughtForwardTextBox.Text) + CInt(JulAmountVouchedTextBox.Text)) - CInt(JulAllocationTextBox.Text)
        End If
End Sub

Open in new window

AusBoyzAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

David RobitailleAnalyst ProgrammerCommented:
I did it ofen and it should work.
Does the textboxes are inside something else?
(please send some code from the aspx)
0
drypzCommented:
Hi! Try this one.



Private Sub AllowanceFormView_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles AllowanceFormView.DataBound
        If AllowanceFormView.CurrentMode = FormViewMode.Edit Then
			For i As Integer = 0 To AllowanceFormView.items.count
			
				Dim HalfYearlyCarryOverLabel As Label = AllowanceFormView.items(i).FindControl("EditHalfYearlyCarryOverLabel")
				Dim BroughtForwardTextBox As TextBox = AllowanceFormView.items(i).FindControl("BroughtForwardTextBox")
				Dim JulAmountVouchedTextBox As TextBox = AllowanceFormView.items(i).FindControl("JulAmountVouchedTextBox")
				Dim JulAllocationTextBox As TextBox = AllowanceFormView.items(i).FindControl("JulAllocationTextBox")
			
			Next
		 
            HalfYearlyCarryOverLabel.Text = (CInt(BroughtForwardTextBox.Text) + CInt(JulAmountVouchedTextBox.Text)) - CInt(JulAllocationTextBox.Text)
        End If
End Sub

Open in new window

0
David RobitailleAnalyst ProgrammerCommented:
drypz:, i see what you are trying to do, but there is some bugs in this algorithm.
the object will be set back nothing if the correct item is not the last one and they are declared inside the for-next loop, so they wont be accessible outside it.
but this could be help to troubleshoot and find the conintainer of the textboxs...
0
Big Business Goals? Which KPIs Will Help You

The most successful MSPs rely on metrics – known as key performance indicators (KPIs) – for making informed decisions that help their businesses thrive, rather than just survive. This eBook provides an overview of the most important KPIs used by top MSPs.

AusBoyzAuthor Commented:
davrob60:

The TextBoxes are inside a FormView, and only inside an EditItemTemplate. Nothing else.



If I add the supplied code above to a Button's onClick event, the code works just fine. So I am able to reference them within a Button onClick event, just not the FormView DataBound event. This is unfortunately as I would like to calculate these fields automatically, and not require the user to click a Button to calculate them.
0
David RobitailleAnalyst ProgrammerCommented:
OK, then it should work, as i said, i got code like that that run smoothly.
I included some of my code just to prove you that it should work. (i cast them with CType, but it should not change anything)
The only thing i could say is to double check your ID, you may have mistyped "JulAllocationTextBox" or any others.
on other thing, does any of those textbox is dynamically created?

 Protected Sub TemplateFormView_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles TemplateFormView.DataBound
 
        '****show the insert or update button as the form mode***
        If TemplateFormView.CurrentMode = FormViewMode.Edit Or _
            TemplateFormView.CurrentMode = FormViewMode.Insert Then
            'get the buttons
            Dim InsertButtonTop As LinkButton = CType(TemplateFormView.FindControl("InsertButtonTop"), LinkButton)
            Dim InsertButtonBottom As LinkButton = CType(TemplateFormView.FindControl("InsertButtonBottom"), LinkButton)
            Dim InsertCancelButtonTop As HyperLink = CType(TemplateFormView.FindControl("InsertCancelButtonTop"), HyperLink)
            Dim InsertCancelButtonBottom As HyperLink = CType(TemplateFormView.FindControl("InsertCancelButtonBottom"), HyperLink)
            Dim InsertCancelButtonTop As HyperLink = CType(TemplateFormView.FindControl("InsertCancelButtonTop"), HyperLink)
            Dim InsertCancelButtonBottom As HyperLink = CType(TemplateFormView.FindControl("InsertCancelButtonBottom"), HyperLink)

Open in new window

0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
AusBoyzAuthor Commented:
The CType() was it!

Thank you very much for your help davrob!

0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
.NET Programming

From novice to tech pro — start learning today.