Problems understanding User Control???

G

Guest

Can someone please help....

I'm having major issues with a user control I'm tring to create!

I an trying to execute a sub called UploadData() from a user control which I
managed to do but for some reason I keep getting the error:

Exception Details: System.NullReferenceException: Object reference not set
to an instance of an object.

Source Error:


Line 80: 'pnlWait.Visible = True
Line 81: Dim objUpload As UploadCnt
Line 82: objUpload.UploadData()
Line 83:
Line 84: Else

I know that the sub works because if I put it staight into the aspx page it
works fine but as sson as I put the sub into the User Control it seems to
stop working...

Can someone please please HELP...

Thanks

ASPX PAGE...

Imports System.Data.SqlClient
Imports System.Data
Imports System.IO

Public Class binUpload
Inherits System.Web.UI.Page
#Region " Web Form Designer Generated Code "

'This call is required by the Web Form Designer.
<System.diagnostics.debuggerstepthrough()> Private Sub
InitializeComponent()

End Sub
Protected WithEvents Menu1 As skmMenu.Menu
Protected WithEvents phHeader As System.Web.UI.WebControls.PlaceHolder
Protected WithEvents phHeaderMenu As System.Web.UI.WebControls.PlaceHolder
Protected WithEvents phFooter As System.Web.UI.WebControls.PlaceHolder
Protected WithEvents phQuickLinks As System.Web.UI.WebControls.PlaceHolder
Protected WithEvents phRefresh As System.Web.UI.WebControls.PlaceHolder
Protected WithEvents phBody As System.Web.UI.WebControls.PlaceHolder
Protected WithEvents phUploader As System.Web.UI.WebControls.PlaceHolder
Protected WithEvents phWait As System.Web.UI.WebControls.PlaceHolder
Protected WithEvents phResults As System.Web.UI.WebControls.PlaceHolder
'NOTE: The following placeholder declaration is required by the Web Form
Designer.
'Do not delete or move it.
Private designerPlaceholderDeclaration As System.Object

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form Designer
'Do not modify it using the code editor.
InitializeComponent()
End Sub

#End Region
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
'Put user code to initialize the page here

phBody.Controls.Add(New LiteralControl("<body bottomMargin=" &
Chr(34) & "0" & Chr(34) & "leftMargin=" & Chr(34) & "0" & Chr(34) &
"topMargin=" & Chr(34) & "0" & Chr(34) & "rightMargin=" & Chr(34) & "0" &
Chr(34) & "runat=" & Chr(34) & "server" & Chr(34) & ">"))
Dim UploadCnt As Control =
LoadControl("../binFileUpload/UploadCnt.ascx")
phWait.Controls.Clear()
phResults.Controls.Clear()
phUploader.Controls.Add(UploadCnt)

If Page.IsPostBack Then

' user submitted file to be uploaded
' create URL with query string to confirm file upload
' next page will not be a postback, so viewstate will be lost
Dim sRefreshURL As String = Request.Url.ToString() &
"?Upload=True"

If Request.Browser.Browser = "IE" Then
phBody.Controls.Clear()
phBody.Controls.Add(New LiteralControl("<body onload=" &
Chr(34) & "loadTarget(" & Chr(39) & sRefreshURL & Chr(39) & ")" & Chr(59) &
Chr(34) & " bottomMargin=" & Chr(34) & "0" & Chr(34) & " leftMargin=" &
Chr(34) & "0" & Chr(34) & " topMargin=" & Chr(34) & "0" & Chr(34) & "
rightMargin=" & Chr(34) & "0" & Chr(34) & " runat=" & Chr(34) & "server" &
Chr(34) & ">"))

' set META REFRESH as well in case script is disabled
' use long delay so that script can load page first if
possible
phRefresh.Controls.Clear()
phRefresh.Controls.Add(New LiteralControl("<meta
http-equiv=" & Chr(34) & "refresh" & Chr(34) & " content=" & Chr(34) &
"30;url=" & sRefreshURL & Chr(34) & ">"))
Else

' not IE so use META REFRESH to start loading next page
' allow 3 seconds for progress bar image to load

phRefresh.Controls.Clear()
phRefresh.Controls.Add(New LiteralControl("<meta
http-equiv=" & Chr(34) & "Refresh" & Chr(34) & " content=" & Chr(34) &
"3;url=" & sRefreshURL & Chr(34) & ">"))

End If

' hide Upload file controls and show "wait" section
Dim WaitCnt As Control =
LoadControl("../binFileUpload/ProgressCnt.ascx")
phUploader.Controls.Clear()
phResults.Controls.Clear()
phWait.Controls.Add(WaitCnt)

'pnlUploadFile.Visible = False
'pnlWait.Visible = True
Dim objUpload As UploadCnt
objUpload.UploadData()

Else

' get query string
Dim iUpload As String = Request.QueryString("Upload")
If iUpload = "" Then

'pnlUploadFile.Visible = True
phWait.Controls.Clear()
phResults.Controls.Clear()
phUploader.Controls.Add(UploadCnt)

Else
phUploader.Controls.Clear()
phWait.Controls.Clear()
Dim ResultsCnt As Control =
LoadControl("../binFileUpload/ResultsCnt.ascx")
phResults.Controls.Add(ResultsCnt)

End If
Dim sRefreshURL As String = Request.Url.ToString() &
"?Upload=False"
End If
End Sub

End Class


USER CONTROL...

Imports System.Data.SqlClient
Imports System.Data
Imports System.IO


Public Class UploadCnt
Inherits System.Web.UI.UserControl

#Region " Web Form Designer Generated Code "

'This call is required by the Web Form Designer.
<System.Diagnostics.DebuggerStepThrough()> Private Sub
InitializeComponent()

End Sub
Protected WithEvents phHeader As System.Web.UI.WebControls.PlaceHolder
Protected WithEvents phHeaderMenu As System.Web.UI.WebControls.PlaceHolder
Protected WithEvents ImageTitle As System.Web.UI.WebControls.TextBox
Protected WithEvents Image4 As System.Web.UI.WebControls.Image
Protected WithEvents fldDescription As System.Web.UI.WebControls.TextBox
Protected WithEvents Image3 As System.Web.UI.WebControls.Image
Protected WithEvents Image1 As System.Web.UI.WebControls.Image
Protected WithEvents fldOwner As System.Web.UI.WebControls.TextBox
Protected WithEvents ddlOffice As System.Web.UI.WebControls.DropDownList
Protected WithEvents Image5 As System.Web.UI.WebControls.Image
Protected WithEvents lblMessage As System.Web.UI.WebControls.Label
Protected WithEvents urlUploadedFiles As
System.Web.UI.WebControls.HyperLink
Protected WithEvents phQuickLinks As System.Web.UI.WebControls.PlaceHolder
Protected WithEvents phFooter As System.Web.UI.WebControls.PlaceHolder
Protected WithEvents Table2 As System.Web.UI.HtmlControls.HtmlTable
Protected WithEvents ImageFile As System.Web.UI.HtmlControls.HtmlInputFile
Protected WithEvents Upload As System.Web.UI.WebControls.Button

'NOTE: The following placeholder declaration is required by the Web Form
Designer.
'Do not delete or move it.
Private designerPlaceholderDeclaration As System.Object

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form Designer
'Do not modify it using the code editor.
InitializeComponent()
End Sub

#End Region

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
'Put user code to initialize the page here

'Loads user controls
Dim c1 As Control = LoadControl("../userControls/footer.ascx")
phFooter.Controls.Add(c1)
Dim c2 As Control = LoadControl("../userControls/headerMenu.ascx")
phHeaderMenu.Controls.Add(c2)
Dim c3 As Control = LoadControl("../userControls/Header.ascx")
phHeader.Controls.Add(c3)
Dim c4 As Control = LoadControl("../userControls/QuickLinks.ascx")
phQuickLinks.Controls.Add(c4)

End Sub


Sub UploadData()
'Dim ImageFile As System.Web.UI.HtmlControls.HtmlInputFile
Dim imgstream As Stream = ImageFile.PostedFile.InputStream
Dim imgdata(ImageFile.PostedFile.ContentLength) As Byte
imgstream.Read(imgdata, 0, ImageFile.PostedFile.ContentLength)


Dim MyConn As New
SqlConnection(ConfigurationSettings.AppSettings("strConn"))
Dim cmd As New SqlCommand("fileUpload", MyConn)
cmd.CommandType = CommandType.StoredProcedure

Dim titleparam As New SqlParameter("@fileTitle", SqlDbType.NVarChar,
255)
Dim descriptionparam As New SqlParameter("@fileDescription",
SqlDbType.NVarChar, 255)
Dim Ownerparam As New SqlParameter("@fileOwner", SqlDbType.NVarChar,
255)
Dim Officeparam As New SqlParameter("@officeID", SqlDbType.Int)
Dim typeparam As New SqlParameter("@fileType", SqlDbType.NVarChar,
100)
Dim dataparam As New SqlParameter("@fileData", SqlDbType.Image)

'Dim ImageTitle As System.Web.UI.WebControls.TextBox
'Dim fldOwner As System.Web.UI.WebControls.TextBox
'Dim fldDescription As System.Web.UI.WebControls.TextBox
'Dim ddlOffice As System.Web.UI.WebControls.DropDownList

titleparam.Value = ImageTitle.Text
descriptionparam.Value = fldDescription.Text
Ownerparam.Value = fldOwner.Text
Officeparam.Value = ddlOffice.SelectedIndex
typeparam.Value = ImageFile.PostedFile.ContentType
dataparam.Value = imgdata

cmd.Parameters.Add(titleparam)
cmd.Parameters.Add(descriptionparam)
cmd.Parameters.Add(Ownerparam)
cmd.Parameters.Add(Officeparam)
cmd.Parameters.Add(typeparam)
cmd.Parameters.Add(dataparam)

MyConn.Open()
cmd.ExecuteNonQuery()
MyConn.Close()
End Sub


End Class
 
G

garethdjames

Dim objUpload As UploadCnt
objUpload.UploadData()

You are not creating a new instance of the class, so it will be null
 
G

Guest

OK... But I then get the following issue!

Do I have to create a new instance of every object in the control... Can
someone please explain this to me... I'm a little new to this!

Thanks

Exception Details: System.NullReferenceException: Object reference not set
to an instance of an object.

Source Error:


Line 114: Sub UploadData()
Line 115: 'Dim ImageFile As System.Web.UI.HtmlControls.HtmlInputFile
Line 116: Dim imgstream As Stream = ImageFile.PostedFile.InputStream
Line 117: Dim imgdata(ImageFile.PostedFile.ContentLength) As Byte
Line 118: imgstream.Read(imgdata, 0,
ImageFile.PostedFile.ContentLength)
 

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

Top