Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / ASP.NET / General / March 2008

Tip: Looking for answers? Try searching our database.

Passing arguments to a user control

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
AlBruAn - 20 Mar 2008 11:45 GMT
I have a user control that gets displayed via an AJAX modalpopupextender.  
This control consists essentially of a text box, a label, three pushbuttons,
and some panels.  If it's desired to have it display a db record, it will
retrieve it, populate the label with its value and set the label and an OK
pushbutton's visible properties to true; if it's to be used to edit/enter a
db record, it will set the visible properties of the text box and that of a
Save and a Cancel pushbuttons equal to true.  Ideally, I'd like to be able to
simply register the control on whatever pages require it, drop a pushbutton
onto the page and write one or two lines of code to set the display/edit mode
and an ID value in the user control and another line of code to popup the
control when the form's pushbutton is clicked.  Is there any way to
accomplish this?

I tried the properties route, but it doesn't seem to want to work for me.  
The problem is I need to know the value of one of them prior to displaying
the user control, but the property doesn't get set until after the Page_Load
event for the user control fires ... too late to be of use.

In the code below, which comes from the parent form, notes is the ID of the
user control and mpe represents the ModalPopupExtender having the ID of the
user control as its PopupControlID.  The first time the user clicks on the
button named btn, the popup acts as if it's in the Display mode; subsequent
button clicks causes the popup to act correctly, with it being in the Edit
mode.  If I didn't stick in that bit of code in the parent form's Page_Load
event, none of the pushbuttons would display thus preventing the user from
dismissing the dialog box.

Partial Class _Default
  Inherits System.Web.UI.Page

  Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
     If Not IsPostBack Then
        notes.Action = "Display"
        notes.OverpaymentID = 368
     End If
  End Sub

  Sub btn_Click(ByVal sender As Object, ByVal e As EventArgs) Handles
btn.Click
     notes.Action = "Edit"
     notes.OverpaymentID = 368

     mpe.Show()
  End Sub
End Class

Following is the code-behind in my user control:

Imports Bcbst.IM.FRO.BusinessObjects
Imports Bcbst.IM.FRO.BusinessObjects.UserControl

Partial Class MyNotes
  Inherits System.Web.UI.UserControl
  'Implements IPostBackDataHandler

  Dim status As Hashtable = New Hashtable()

  Public Property Action() As String
     Get
        Return ViewState("Action")
     End Get
     Set(ByVal value As String)
        ViewState("Action") = value
     End Set
  End Property

  Public Property OverpaymentID() As Integer
     Get
        Return CInt(ViewState("OverpaymentID"))
     End Get
     Set(ByVal value As Integer)
        ViewState("OverpaymentID") = value
     End Set
  End Property

  Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
     If IsPostBack Then
        If ViewState("Action") = "Edit" Then
           btnSave.Visible = True
           btnCancel.Visible = True
           txtNotes.Visible = True
           btnOK.Visible = False
           lblNotes.Visible = False
        ElseIf ViewState("Action") = "Display" Then
           btnOK.Visible = True
           lblNotes.Visible = True
           txtNotes.Visible = False
           btnSave.Visible = False
           btnCancel.Visible = False
        End If
        If IsNothing(ViewState("Status")) Then
           For i As Integer = 0 To Me.Parent.Parent.Controls.Count - 1
              If Me.Parent.Parent.Controls(i).UniqueID <> "notesPopup" Then
                 ' Code to disable all other controls on form
              End If
           ViewState("Status") = status
        End If
     Else
        If ViewState("Action") = "Edit" Then
           btnSave.Visible = True
           btnCancel.Visible = True
           txtNotes.Visible = True
           btnOK.Visible = False
           lblNotes.Visible = False
        ElseIf ViewState("Action") = "Display" Then
           btnOK.Visible = True
           lblNotes.Visible = True
           txtNotes.Visible = False
           btnSave.Visible = False
           btnCancel.Visible = False

           ' Code to retrieve data from the DB based on the OverpaymentID
and display it
        End If
     End If
  End Sub

  Sub ResetControls(ByVal sender As Object, ByVal e As EventArgs)
     status = ViewState("Status")

     For Each ctrl As Control In Me.Parent.Parent.Controls
        If ctrl.UniqueID <> "notesPopup" Then
           ' Code to re-enable any previously disabled controls
        End If
     Next

     ViewState("Status") = Nothing
  End Sub

  Sub SaveNote(ByVal sender As Object, ByVal e As EventArgs)
     ' Code to save any changes in the note to the DB
     ResetControls(sender, e)
  End Sub

  'Public Function LoadPostData(ByVal postDataKey As String, ByVal
postCollection As System.Collections.Specialized.NameValueCollection) As
Boolean Implements System.Web.UI.IPostBackDataHandler.LoadPostData

  'End Function

  'Public Sub RaisePostDataChangedEvent() Implements
System.Web.UI.IPostBackDataHandler.RaisePostDataChangedEvent

  'End Sub
End Class

Can anyone find what I'm doing wrong with this?
Signature

Things are more like they are now than they ever have been before.

bruce barker - 20 Mar 2008 15:48 GMT
you fail to understand how the modalpopup works. when you click the trigger,
it just unhides the content, no postback is done. this means your user
control will display as set on the first page render.

-- bruce (sqlwork.com)

> I have a user control that gets displayed via an AJAX modalpopupextender.  
> This control consists essentially of a text box, a label, three pushbuttons,
[quoted text clipped - 145 lines]
>
> Can anyone find what I'm doing wrong with this?

Rate this thread:







Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.