Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > ASP .Net Building Controls > Maintaining the look of dynamically added usercontrols

Reply
Thread Tools

Maintaining the look of dynamically added usercontrols

 
 
Nathan Sokalski
Guest
Posts: n/a
 
      06-16-2007
I have a page which I dynamically add several usercontrols (*.ascx files) to
using the following code:


Public Sub Refresh()
For Each section As DataRow In Me.GetSections().Rows
CType(Me.FindControl("admin" & CStr(section("buttontext")).Replace(" ",
"")), adminsection2).RefreshSection()
Next
End Sub

Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
Dim sections As DataTable = Me.GetSections()
For Each section As DataRow In sections.Rows
Me.AddAdminSection(CStr(section("buttontext")))
Next
Me.Refresh()
End Sub

Private Function GetSections() As DataTable
Dim sections As New DataTable
Dim dataadapterSelect As New OleDbDataAdapter("SELECT buttontext FROM
subnavigation WHERE buttontext<>'More.' AND category='" &
Request.QueryString("category") & "' ORDER BY buttonorder",
System.Configuration.ConfigurationManager.AppSetti ngs("connectionstring"))
dataadapterSelect.Fill(sections)
Return sections
End Function

Private Sub AddAdminSection(ByVal section As String)
Dim admin As adminsection2 =
CType(Page.LoadControl("~/usercontrols/adminsection2.ascx"), adminsection2)
admin.ID = "admin" & section.Replace(" ", "")
admin.Section = section
Me.form1.Controls.Add(admin)
End Sub


My problem is that the controls are reloaded every time, as you can see from
the Load event. If I place the following line

Me.AddAdminSection(CStr(section("buttontext")))

in an If Not Me.IsPostBack() statement, then it is only loaded the first
time and I recieve an object does not exist error every time the Refresh()
method is called (which is reasonably often, because this is for an
administration page where the user edits DB records). What can I do to
maintain the look of the dynamically added controls (in other words, how can
I avoid replacing them with every postback)? If there is any other code you
need to see that might help, let me know. Thanks.
--
Nathan Sokalski
http://www.velocityreviews.com/forums/(E-Mail Removed)
http://www.nathansokalski.com/


 
Reply With Quote
 
 
 
 
Masudur
Guest
Posts: n/a
 
      06-16-2007
On Jun 16, 10:53 am, "Nathan Sokalski" <(E-Mail Removed)> wrote:
> I have a page which I dynamically add several usercontrols (*.ascx files) to
> using the following code:
>
> Public Sub Refresh()
> For Each section As DataRow In Me.GetSections().Rows
> CType(Me.FindControl("admin" & CStr(section("buttontext")).Replace(" ",
> "")), adminsection2).RefreshSection()
> Next
> End Sub
>
> Protected Sub Page_Load(ByVal sender As Object, ByVal e As
> System.EventArgs) Handles Me.Load
> Dim sections As DataTable = Me.GetSections()
> For Each section As DataRow In sections.Rows
> Me.AddAdminSection(CStr(section("buttontext")))
> Next
> Me.Refresh()
> End Sub
>
> Private Function GetSections() As DataTable
> Dim sections As New DataTable
> Dim dataadapterSelect As New OleDbDataAdapter("SELECT buttontext FROM
> subnavigation WHERE buttontext<>'More.' AND category='" &
> Request.QueryString("category") & "' ORDER BY buttonorder",
> System.Configuration.ConfigurationManager.AppSetti ngs("connectionstring"))
> dataadapterSelect.Fill(sections)
> Return sections
> End Function
>
> Private Sub AddAdminSection(ByVal section As String)
> Dim admin As adminsection2 =
> CType(Page.LoadControl("~/usercontrols/adminsection2.ascx"), adminsection2)
> admin.ID = "admin" & section.Replace(" ", "")
> admin.Section = section
> Me.form1.Controls.Add(admin)
> End Sub
>
> My problem is that the controls are reloaded every time, as you can see from
> the Load event. If I place the following line
>
> Me.AddAdminSection(CStr(section("buttontext")))
>
> in an If Not Me.IsPostBack() statement, then it is only loaded the first
> time and I recieve an object does not exist error every time the Refresh()
> method is called (which is reasonably often, because this is for an
> administration page where the user edits DB records). What can I do to
> maintain the look of the dynamically added controls (in other words, how can
> I avoid replacing them with every postback)? If there is any other code you
> need to see that might help, let me know. Thanks.
> --
> Nathan Sokalski
> (E-Mail Removed)://www.nathansokalski.com/


Hi,

Dynamically loaded controls need to be load after each post back...
other wise dynamically loaded control's event wont work...
Its always a good practice to load the controls in page_init event

Thanks
Masudur

 
Reply With Quote
 
 
 
 
Nathan Sokalski
Guest
Posts: n/a
 
      06-17-2007
Isn't there any kind of workaround? I am sure that I am not the first person
to want to maintain the properties of dynamically loaded usercontrols
between postbacks. Anybody have any ideas? Thanks.
--
Nathan Sokalski
(E-Mail Removed)
http://www.nathansokalski.com/

"Masudur" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed) ups.com...
> On Jun 16, 10:53 am, "Nathan Sokalski" <(E-Mail Removed)> wrote:
>> I have a page which I dynamically add several usercontrols (*.ascx files)
>> to
>> using the following code:
>>
>> Public Sub Refresh()
>> For Each section As DataRow In Me.GetSections().Rows
>> CType(Me.FindControl("admin" & CStr(section("buttontext")).Replace("
>> ",
>> "")), adminsection2).RefreshSection()
>> Next
>> End Sub
>>
>> Protected Sub Page_Load(ByVal sender As Object, ByVal e As
>> System.EventArgs) Handles Me.Load
>> Dim sections As DataTable = Me.GetSections()
>> For Each section As DataRow In sections.Rows
>> Me.AddAdminSection(CStr(section("buttontext")))
>> Next
>> Me.Refresh()
>> End Sub
>>
>> Private Function GetSections() As DataTable
>> Dim sections As New DataTable
>> Dim dataadapterSelect As New OleDbDataAdapter("SELECT buttontext FROM
>> subnavigation WHERE buttontext<>'More.' AND category='" &
>> Request.QueryString("category") & "' ORDER BY buttonorder",
>> System.Configuration.ConfigurationManager.AppSetti ngs("connectionstring"))
>> dataadapterSelect.Fill(sections)
>> Return sections
>> End Function
>>
>> Private Sub AddAdminSection(ByVal section As String)
>> Dim admin As adminsection2 =
>> CType(Page.LoadControl("~/usercontrols/adminsection2.ascx"),
>> adminsection2)
>> admin.ID = "admin" & section.Replace(" ", "")
>> admin.Section = section
>> Me.form1.Controls.Add(admin)
>> End Sub
>>
>> My problem is that the controls are reloaded every time, as you can see
>> from
>> the Load event. If I place the following line
>>
>> Me.AddAdminSection(CStr(section("buttontext")))
>>
>> in an If Not Me.IsPostBack() statement, then it is only loaded the first
>> time and I recieve an object does not exist error every time the
>> Refresh()
>> method is called (which is reasonably often, because this is for an
>> administration page where the user edits DB records). What can I do to
>> maintain the look of the dynamically added controls (in other words, how
>> can
>> I avoid replacing them with every postback)? If there is any other code
>> you
>> need to see that might help, let me know. Thanks.
>> --
>> Nathan Sokalski
>> (E-Mail Removed)://www.nathansokalski.com/

>
> Hi,
>
> Dynamically loaded controls need to be load after each post back...
> other wise dynamically loaded control's event wont work...
> Its always a good practice to load the controls in page_init event
>
> Thanks
> Masudur
>



 
Reply With Quote
 
Cor Ligthert [MVP]
Guest
Posts: n/a
 
      06-18-2007
Nathan,

Probably Ajax, however I am seriously curious what a usercontrol for ASPNET
has to do with ADONET.

Cor

"Nathan Sokalski" <(E-Mail Removed)> schreef in bericht
news:(E-Mail Removed)...
> Isn't there any kind of workaround? I am sure that I am not the first
> person to want to maintain the properties of dynamically loaded
> usercontrols between postbacks. Anybody have any ideas? Thanks.
> --
> Nathan Sokalski
> (E-Mail Removed)
> http://www.nathansokalski.com/
>
> "Masudur" <(E-Mail Removed)> wrote in message
> news:(E-Mail Removed) ups.com...
>> On Jun 16, 10:53 am, "Nathan Sokalski" <(E-Mail Removed)> wrote:
>>> I have a page which I dynamically add several usercontrols (*.ascx
>>> files) to
>>> using the following code:
>>>
>>> Public Sub Refresh()
>>> For Each section As DataRow In Me.GetSections().Rows
>>> CType(Me.FindControl("admin" & CStr(section("buttontext")).Replace("
>>> ",
>>> "")), adminsection2).RefreshSection()
>>> Next
>>> End Sub
>>>
>>> Protected Sub Page_Load(ByVal sender As Object, ByVal e As
>>> System.EventArgs) Handles Me.Load
>>> Dim sections As DataTable = Me.GetSections()
>>> For Each section As DataRow In sections.Rows
>>> Me.AddAdminSection(CStr(section("buttontext")))
>>> Next
>>> Me.Refresh()
>>> End Sub
>>>
>>> Private Function GetSections() As DataTable
>>> Dim sections As New DataTable
>>> Dim dataadapterSelect As New OleDbDataAdapter("SELECT buttontext FROM
>>> subnavigation WHERE buttontext<>'More.' AND category='" &
>>> Request.QueryString("category") & "' ORDER BY buttonorder",
>>> System.Configuration.ConfigurationManager.AppSetti ngs("connectionstring"))
>>> dataadapterSelect.Fill(sections)
>>> Return sections
>>> End Function
>>>
>>> Private Sub AddAdminSection(ByVal section As String)
>>> Dim admin As adminsection2 =
>>> CType(Page.LoadControl("~/usercontrols/adminsection2.ascx"),
>>> adminsection2)
>>> admin.ID = "admin" & section.Replace(" ", "")
>>> admin.Section = section
>>> Me.form1.Controls.Add(admin)
>>> End Sub
>>>
>>> My problem is that the controls are reloaded every time, as you can see
>>> from
>>> the Load event. If I place the following line
>>>
>>> Me.AddAdminSection(CStr(section("buttontext")))
>>>
>>> in an If Not Me.IsPostBack() statement, then it is only loaded the first
>>> time and I recieve an object does not exist error every time the
>>> Refresh()
>>> method is called (which is reasonably often, because this is for an
>>> administration page where the user edits DB records). What can I do to
>>> maintain the look of the dynamically added controls (in other words, how
>>> can
>>> I avoid replacing them with every postback)? If there is any other code
>>> you
>>> need to see that might help, let me know. Thanks.
>>> --
>>> Nathan Sokalski
>>> (E-Mail Removed)://www.nathansokalski.com/

>>
>> Hi,
>>
>> Dynamically loaded controls need to be load after each post back...
>> other wise dynamically loaded control's event wont work...
>> Its always a good practice to load the controls in page_init event
>>
>> Thanks
>> Masudur
>>

>
>



 
Reply With Quote
 
Miha Markic
Guest
Posts: n/a
 
      06-18-2007

"Nathan Sokalski" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> Isn't there any kind of workaround? I am sure that I am not the first
> person to want to maintain the properties of dynamically loaded
> usercontrols between postbacks. Anybody have any ideas? Thanks.


You have to load dynamically added controls each time. Their properties are
mantained as with static controls.
--
Miha Markic [MVP C#, INETA Country Leader for Slovenia]
RightHand .NET consulting & development www.rthand.com
Blog: http://cs.rthand.com/blogs/blog_with_righthand/

 
Reply With Quote
 
Nathan Sokalski
Guest
Posts: n/a
 
      06-18-2007
The dynamically added usercontrols that I want to maintain the look of
contain AJAX, and the reason for the postbacks is to update the data
accessed using ADO.NET, so there are your relations to AJAX and ADO.NET. The
main tags in the usercontrol are the following:

<aspanel>
<asp:Label/>
</aspanel>
<aspanel>
<aspataList>
</aspataList>
</aspanel>
<AJAX:CollapsiblePanelExtender/>

(obviously the controls all have their properties, and the DataList has it's
ItemTemplate and EditItemTemplate). The property that I am having trouble
maintaining is the Collapsed property of the CollapsiblePanelExtender
control. The postbacks are usually caused by eventbubbling through Button
controls in the DataList. I haven't tried it yet, but one idea I thought
about was to put the DataList inside an UpdatePanel. The only concerns I had
with this idea were:

1. In some cases, a record is moved from the DataSource of one DataList to
the DataSource of another DataList. This would mean I would still need a way
to update all the DataLists regardless. Any ideas to make this possibility
work?

2. There is one section that on the page (not in the usercontrols, but on
the page that contains the usercontrols) that is used to add records,
obviously causing a postback. This would cause pretty much the same
situation as Concern #1, and would probably be solved in a similar way. Any
ideas for this?

The code I currently use to update the usercontrols is the following. The
*.ascx.vb file contains the following method, which is called for all of the
usercontrols from a method in the containing page (I removed the
OleDbDataAdapter's SQL to keep the code short in the posting):

Public Sub RefreshSection()
Dim sectiontable As New DataTable
Dim sectionadapter As New OleDbDataAdapter("",
ConfigurationManager.AppSettings("connectionstring "))
sectionadapter.Fill(sectiontable)
Me.datSection.DataSource = sectiontable
Me.datSection.DataBind()
End Sub

Do any of these ideas or information help give a way to solve my problem?
Thanks.
--
Nathan Sokalski
(E-Mail Removed)
http://www.nathansokalski.com/

"Cor Ligthert [MVP]" <(E-Mail Removed)> wrote in message
news:%(E-Mail Removed)...
> Nathan,
>
> Probably Ajax, however I am seriously curious what a usercontrol for
> ASPNET has to do with ADONET.
>
> Cor
>
> "Nathan Sokalski" <(E-Mail Removed)> schreef in bericht
> news:(E-Mail Removed)...
>> Isn't there any kind of workaround? I am sure that I am not the first
>> person to want to maintain the properties of dynamically loaded
>> usercontrols between postbacks. Anybody have any ideas? Thanks.
>> --
>> Nathan Sokalski
>> (E-Mail Removed)
>> http://www.nathansokalski.com/
>>
>> "Masudur" <(E-Mail Removed)> wrote in message
>> news:(E-Mail Removed) ups.com...
>>> On Jun 16, 10:53 am, "Nathan Sokalski" <(E-Mail Removed)> wrote:
>>>> I have a page which I dynamically add several usercontrols (*.ascx
>>>> files) to
>>>> using the following code:
>>>>
>>>> Public Sub Refresh()
>>>> For Each section As DataRow In Me.GetSections().Rows
>>>> CType(Me.FindControl("admin" & CStr(section("buttontext")).Replace("
>>>> ",
>>>> "")), adminsection2).RefreshSection()
>>>> Next
>>>> End Sub
>>>>
>>>> Protected Sub Page_Load(ByVal sender As Object, ByVal e As
>>>> System.EventArgs) Handles Me.Load
>>>> Dim sections As DataTable = Me.GetSections()
>>>> For Each section As DataRow In sections.Rows
>>>> Me.AddAdminSection(CStr(section("buttontext")))
>>>> Next
>>>> Me.Refresh()
>>>> End Sub
>>>>
>>>> Private Function GetSections() As DataTable
>>>> Dim sections As New DataTable
>>>> Dim dataadapterSelect As New OleDbDataAdapter("SELECT buttontext FROM
>>>> subnavigation WHERE buttontext<>'More.' AND category='" &
>>>> Request.QueryString("category") & "' ORDER BY buttonorder",
>>>> System.Configuration.ConfigurationManager.AppSetti ngs("connectionstring"))
>>>> dataadapterSelect.Fill(sections)
>>>> Return sections
>>>> End Function
>>>>
>>>> Private Sub AddAdminSection(ByVal section As String)
>>>> Dim admin As adminsection2 =
>>>> CType(Page.LoadControl("~/usercontrols/adminsection2.ascx"),
>>>> adminsection2)
>>>> admin.ID = "admin" & section.Replace(" ", "")
>>>> admin.Section = section
>>>> Me.form1.Controls.Add(admin)
>>>> End Sub
>>>>
>>>> My problem is that the controls are reloaded every time, as you can see
>>>> from
>>>> the Load event. If I place the following line
>>>>
>>>> Me.AddAdminSection(CStr(section("buttontext")))
>>>>
>>>> in an If Not Me.IsPostBack() statement, then it is only loaded the
>>>> first
>>>> time and I recieve an object does not exist error every time the
>>>> Refresh()
>>>> method is called (which is reasonably often, because this is for an
>>>> administration page where the user edits DB records). What can I do to
>>>> maintain the look of the dynamically added controls (in other words,
>>>> how can
>>>> I avoid replacing them with every postback)? If there is any other code
>>>> you
>>>> need to see that might help, let me know. Thanks.
>>>> --
>>>> Nathan Sokalski
>>>> (E-Mail Removed)://www.nathansokalski.com/
>>>
>>> Hi,
>>>
>>> Dynamically loaded controls need to be load after each post back...
>>> other wise dynamically loaded control's event wont work...
>>> Its always a good practice to load the controls in page_init event
>>>
>>> Thanks
>>> Masudur
>>>

>>
>>

>
>



 
Reply With Quote
 
Cor Ligthert [MVP]
Guest
Posts: n/a
 
      06-19-2007
Nathan,

We have used that on our VB-Tips website, however I have not enough time to
get a nice sample from that. Why don't you make for your self a simple
sample only containing your problem.

You will find that you than find the solution.

Cor

"Nathan Sokalski" <(E-Mail Removed)> schreef in bericht
news:%(E-Mail Removed)...
> The dynamically added usercontrols that I want to maintain the look of
> contain AJAX, and the reason for the postbacks is to update the data
> accessed using ADO.NET, so there are your relations to AJAX and ADO.NET.
> The main tags in the usercontrol are the following:
>
> <aspanel>
> <asp:Label/>
> </aspanel>
> <aspanel>
> <aspataList>
> </aspataList>
> </aspanel>
> <AJAX:CollapsiblePanelExtender/>
>
> (obviously the controls all have their properties, and the DataList has
> it's ItemTemplate and EditItemTemplate). The property that I am having
> trouble maintaining is the Collapsed property of the
> CollapsiblePanelExtender control. The postbacks are usually caused by
> eventbubbling through Button controls in the DataList. I haven't tried it
> yet, but one idea I thought about was to put the DataList inside an
> UpdatePanel. The only concerns I had with this idea were:
>
> 1. In some cases, a record is moved from the DataSource of one DataList to
> the DataSource of another DataList. This would mean I would still need a
> way to update all the DataLists regardless. Any ideas to make this
> possibility work?
>
> 2. There is one section that on the page (not in the usercontrols, but on
> the page that contains the usercontrols) that is used to add records,
> obviously causing a postback. This would cause pretty much the same
> situation as Concern #1, and would probably be solved in a similar way.
> Any ideas for this?
>
> The code I currently use to update the usercontrols is the following. The
> *.ascx.vb file contains the following method, which is called for all of
> the usercontrols from a method in the containing page (I removed the
> OleDbDataAdapter's SQL to keep the code short in the posting):
>
> Public Sub RefreshSection()
> Dim sectiontable As New DataTable
> Dim sectionadapter As New OleDbDataAdapter("",
> ConfigurationManager.AppSettings("connectionstring "))
> sectionadapter.Fill(sectiontable)
> Me.datSection.DataSource = sectiontable
> Me.datSection.DataBind()
> End Sub
>
> Do any of these ideas or information help give a way to solve my problem?
> Thanks.
> --
> Nathan Sokalski
> (E-Mail Removed)
> http://www.nathansokalski.com/
>
> "Cor Ligthert [MVP]" <(E-Mail Removed)> wrote in message
> news:%(E-Mail Removed)...
>> Nathan,
>>
>> Probably Ajax, however I am seriously curious what a usercontrol for
>> ASPNET has to do with ADONET.
>>
>> Cor
>>
>> "Nathan Sokalski" <(E-Mail Removed)> schreef in bericht
>> news:(E-Mail Removed)...
>>> Isn't there any kind of workaround? I am sure that I am not the first
>>> person to want to maintain the properties of dynamically loaded
>>> usercontrols between postbacks. Anybody have any ideas? Thanks.
>>> --
>>> Nathan Sokalski
>>> (E-Mail Removed)
>>> http://www.nathansokalski.com/
>>>
>>> "Masudur" <(E-Mail Removed)> wrote in message
>>> news:(E-Mail Removed) ups.com...
>>>> On Jun 16, 10:53 am, "Nathan Sokalski" <(E-Mail Removed)> wrote:
>>>>> I have a page which I dynamically add several usercontrols (*.ascx
>>>>> files) to
>>>>> using the following code:
>>>>>
>>>>> Public Sub Refresh()
>>>>> For Each section As DataRow In Me.GetSections().Rows
>>>>> CType(Me.FindControl("admin" &
>>>>> CStr(section("buttontext")).Replace(" ",
>>>>> "")), adminsection2).RefreshSection()
>>>>> Next
>>>>> End Sub
>>>>>
>>>>> Protected Sub Page_Load(ByVal sender As Object, ByVal e As
>>>>> System.EventArgs) Handles Me.Load
>>>>> Dim sections As DataTable = Me.GetSections()
>>>>> For Each section As DataRow In sections.Rows
>>>>> Me.AddAdminSection(CStr(section("buttontext")))
>>>>> Next
>>>>> Me.Refresh()
>>>>> End Sub
>>>>>
>>>>> Private Function GetSections() As DataTable
>>>>> Dim sections As New DataTable
>>>>> Dim dataadapterSelect As New OleDbDataAdapter("SELECT buttontext
>>>>> FROM
>>>>> subnavigation WHERE buttontext<>'More.' AND category='" &
>>>>> Request.QueryString("category") & "' ORDER BY buttonorder",
>>>>> System.Configuration.ConfigurationManager.AppSetti ngs("connectionstring"))
>>>>> dataadapterSelect.Fill(sections)
>>>>> Return sections
>>>>> End Function
>>>>>
>>>>> Private Sub AddAdminSection(ByVal section As String)
>>>>> Dim admin As adminsection2 =
>>>>> CType(Page.LoadControl("~/usercontrols/adminsection2.ascx"),
>>>>> adminsection2)
>>>>> admin.ID = "admin" & section.Replace(" ", "")
>>>>> admin.Section = section
>>>>> Me.form1.Controls.Add(admin)
>>>>> End Sub
>>>>>
>>>>> My problem is that the controls are reloaded every time, as you can
>>>>> see from
>>>>> the Load event. If I place the following line
>>>>>
>>>>> Me.AddAdminSection(CStr(section("buttontext")))
>>>>>
>>>>> in an If Not Me.IsPostBack() statement, then it is only loaded the
>>>>> first
>>>>> time and I recieve an object does not exist error every time the
>>>>> Refresh()
>>>>> method is called (which is reasonably often, because this is for an
>>>>> administration page where the user edits DB records). What can I do to
>>>>> maintain the look of the dynamically added controls (in other words,
>>>>> how can
>>>>> I avoid replacing them with every postback)? If there is any other
>>>>> code you
>>>>> need to see that might help, let me know. Thanks.
>>>>> --
>>>>> Nathan Sokalski
>>>>> (E-Mail Removed)://www.nathansokalski.com/
>>>>
>>>> Hi,
>>>>
>>>> Dynamically loaded controls need to be load after each post back...
>>>> other wise dynamically loaded control's event wont work...
>>>> Its always a good practice to load the controls in page_init event
>>>>
>>>> Thanks
>>>> Masudur
>>>>
>>>
>>>

>>
>>

>
>



 
Reply With Quote
 
Cor Ligthert [MVP]
Guest
Posts: n/a
 
      06-19-2007
If it was now friday I could make the sample.


"Nathan Sokalski" <(E-Mail Removed)> schreef in bericht
news:%(E-Mail Removed)...
> The dynamically added usercontrols that I want to maintain the look of
> contain AJAX, and the reason for the postbacks is to update the data
> accessed using ADO.NET, so there are your relations to AJAX and ADO.NET.
> The main tags in the usercontrol are the following:
>
> <aspanel>
> <asp:Label/>
> </aspanel>
> <aspanel>
> <aspataList>
> </aspataList>
> </aspanel>
> <AJAX:CollapsiblePanelExtender/>
>
> (obviously the controls all have their properties, and the DataList has
> it's ItemTemplate and EditItemTemplate). The property that I am having
> trouble maintaining is the Collapsed property of the
> CollapsiblePanelExtender control. The postbacks are usually caused by
> eventbubbling through Button controls in the DataList. I haven't tried it
> yet, but one idea I thought about was to put the DataList inside an
> UpdatePanel. The only concerns I had with this idea were:
>
> 1. In some cases, a record is moved from the DataSource of one DataList to
> the DataSource of another DataList. This would mean I would still need a
> way to update all the DataLists regardless. Any ideas to make this
> possibility work?
>
> 2. There is one section that on the page (not in the usercontrols, but on
> the page that contains the usercontrols) that is used to add records,
> obviously causing a postback. This would cause pretty much the same
> situation as Concern #1, and would probably be solved in a similar way.
> Any ideas for this?
>
> The code I currently use to update the usercontrols is the following. The
> *.ascx.vb file contains the following method, which is called for all of
> the usercontrols from a method in the containing page (I removed the
> OleDbDataAdapter's SQL to keep the code short in the posting):
>
> Public Sub RefreshSection()
> Dim sectiontable As New DataTable
> Dim sectionadapter As New OleDbDataAdapter("",
> ConfigurationManager.AppSettings("connectionstring "))
> sectionadapter.Fill(sectiontable)
> Me.datSection.DataSource = sectiontable
> Me.datSection.DataBind()
> End Sub
>
> Do any of these ideas or information help give a way to solve my problem?
> Thanks.
> --
> Nathan Sokalski
> (E-Mail Removed)
> http://www.nathansokalski.com/
>
> "Cor Ligthert [MVP]" <(E-Mail Removed)> wrote in message
> news:%(E-Mail Removed)...
>> Nathan,
>>
>> Probably Ajax, however I am seriously curious what a usercontrol for
>> ASPNET has to do with ADONET.
>>
>> Cor
>>
>> "Nathan Sokalski" <(E-Mail Removed)> schreef in bericht
>> news:(E-Mail Removed)...
>>> Isn't there any kind of workaround? I am sure that I am not the first
>>> person to want to maintain the properties of dynamically loaded
>>> usercontrols between postbacks. Anybody have any ideas? Thanks.
>>> --
>>> Nathan Sokalski
>>> (E-Mail Removed)
>>> http://www.nathansokalski.com/
>>>
>>> "Masudur" <(E-Mail Removed)> wrote in message
>>> news:(E-Mail Removed) ups.com...
>>>> On Jun 16, 10:53 am, "Nathan Sokalski" <(E-Mail Removed)> wrote:
>>>>> I have a page which I dynamically add several usercontrols (*.ascx
>>>>> files) to
>>>>> using the following code:
>>>>>
>>>>> Public Sub Refresh()
>>>>> For Each section As DataRow In Me.GetSections().Rows
>>>>> CType(Me.FindControl("admin" &
>>>>> CStr(section("buttontext")).Replace(" ",
>>>>> "")), adminsection2).RefreshSection()
>>>>> Next
>>>>> End Sub
>>>>>
>>>>> Protected Sub Page_Load(ByVal sender As Object, ByVal e As
>>>>> System.EventArgs) Handles Me.Load
>>>>> Dim sections As DataTable = Me.GetSections()
>>>>> For Each section As DataRow In sections.Rows
>>>>> Me.AddAdminSection(CStr(section("buttontext")))
>>>>> Next
>>>>> Me.Refresh()
>>>>> End Sub
>>>>>
>>>>> Private Function GetSections() As DataTable
>>>>> Dim sections As New DataTable
>>>>> Dim dataadapterSelect As New OleDbDataAdapter("SELECT buttontext
>>>>> FROM
>>>>> subnavigation WHERE buttontext<>'More.' AND category='" &
>>>>> Request.QueryString("category") & "' ORDER BY buttonorder",
>>>>> System.Configuration.ConfigurationManager.AppSetti ngs("connectionstring"))
>>>>> dataadapterSelect.Fill(sections)
>>>>> Return sections
>>>>> End Function
>>>>>
>>>>> Private Sub AddAdminSection(ByVal section As String)
>>>>> Dim admin As adminsection2 =
>>>>> CType(Page.LoadControl("~/usercontrols/adminsection2.ascx"),
>>>>> adminsection2)
>>>>> admin.ID = "admin" & section.Replace(" ", "")
>>>>> admin.Section = section
>>>>> Me.form1.Controls.Add(admin)
>>>>> End Sub
>>>>>
>>>>> My problem is that the controls are reloaded every time, as you can
>>>>> see from
>>>>> the Load event. If I place the following line
>>>>>
>>>>> Me.AddAdminSection(CStr(section("buttontext")))
>>>>>
>>>>> in an If Not Me.IsPostBack() statement, then it is only loaded the
>>>>> first
>>>>> time and I recieve an object does not exist error every time the
>>>>> Refresh()
>>>>> method is called (which is reasonably often, because this is for an
>>>>> administration page where the user edits DB records). What can I do to
>>>>> maintain the look of the dynamically added controls (in other words,
>>>>> how can
>>>>> I avoid replacing them with every postback)? If there is any other
>>>>> code you
>>>>> need to see that might help, let me know. Thanks.
>>>>> --
>>>>> Nathan Sokalski
>>>>> (E-Mail Removed)://www.nathansokalski.com/
>>>>
>>>> Hi,
>>>>
>>>> Dynamically loaded controls need to be load after each post back...
>>>> other wise dynamically loaded control's event wont work...
>>>> Its always a good practice to load the controls in page_init event
>>>>
>>>> Thanks
>>>> Masudur
>>>>
>>>
>>>

>>
>>

>
>



 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
3 ESSENTIAL TOOLS FOR STARTING AND MAINTAINING...3 ESSENTIAL TOOLSFOR STARTING AND MAINTAINING...3 ESSENTIAL TOOLS FOR STARTING ANDMAINTAINING... Oanh Bui Python 0 04-27-2009 12:46 PM
Problem with Events in UserControls dynamically added to AJAX UpdatePanel JacekDr ASP .Net 3 08-26-2007 12:53 AM
Maintaining the look of dynamically added usercontrols Nathan Sokalski ASP .Net 7 06-19-2007 05:04 AM
CustomControls and Dynamically Added UserControls a ASP .Net Web Controls 1 11-12-2003 06:21 AM
Events not firing on dynamically added UserControls James Gerdes ASP .Net Building Controls 1 09-25-2003 03:41 AM



Advertisments