Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 436
  • Last Modified:

Updatepanels and user controls

<asp:UpdatePanel ID="uptPnlMain" UpdateMode="Conditional" runat="server">
                    <ContentTemplate>
                        <table>
                            <tr style="padding-top: 7px">
                                <td>
                                    <table width="100%" border="0" cellspacing="0" cellpadding="0" class="tab">
                                        <div>
                                            <tr>
                                                <td width="979" align="left" valign="middle" class="pnav" style="padding-left: 15px;
                                                    padding-top: 5px; padding-right: 4px;">
                                                    <asp:LinkButton ID="lnkCorporate" runat="server" CausesValidation="false"
                                                        OnCommand="lnkCorporate_Command" Text="Corp ID   |"></asp:LinkButton>
                                                    <asp:LinkButton ID="lnkPersonal" runat="server" CausesValidation="false"
                                                        OnCommand="lnkPersonal_Command" Text="Personal  |"></asp:LinkButton>
&#9;&#9;&#9;&#9;&#9;&#9; </td>
                                            </tr>
                                        </div>
                                    </table>
&#9;&#9;&#9;    <tr id="trCorporateRow" visible="false" runat="server">
                                <td>
                                    <ucCorporate:CorpId ID="CorpIdTab" runat="server" />
                                </td>
                            </tr>
                            <tr id="trPersonalRow" visible="false" runat="server">
                                <td>
                                    <ucPersonal:Personal ID="PersonalTab" runat="server" />
                                </td>
                            </tr>

protected void lnkCorporate_Command(object sender, EventArgs e)
        {
&#9;&#9;trPersonalRow.Visible = true;
                trCorporateRow.Visible = false;
&#9;}

 protected void lnkPersonal_Command(object sender, EventArgs e)
        {
&#9;&#9;trPersonalRow.Visible = false;
                trCorporateRow.Visible = true;
&#9;}

There are two user controls,personal and corporate.
I have noticed one thing.By default I am loading Personal user control.
When I click corporate link,corporate user control is loaded.
but html is not changed.In the source I am having controls of personal tab only.
I tried using placeholder instead of using rows but sane thing happens.
I am assuming this is because of the Updatepanel,as before it was loading controls of the respective user control.
I am expecting some guidance from you experts.Please tell me what needs to be done?
0
Johny Bravo
Asked:
Johny Bravo
  • 10
  • 5
  • 3
  • +3
2 Solutions
 
gsiricCommented:
Did you tried to hide or show controls not rows in a table ?
0
 
antonybrahinCommented:
or u can put it in a div if more than one controls and do the hide and show.
0
 
Johny BravoAuthor Commented:
Not tried earlier,
but after your suggestion I tried putting
PersonalTab.Visible = true;
                CorpIdTab.Visible = false;

but html is not changing.
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
Johny BravoAuthor Commented:
Controls are loaded.I can see the controls on the page.but when I see the source of that page,the controls are not present in the source
0
 
existenz2Commented:
When using updatepanels you don't really see the HTML changing normally. But your code seems valid, so this should work.

Are you using any child updatepanels? Also have you tried to call "uptPnlMain.Update()" in the two events?
0
 
Johny BravoAuthor Commented:
I tried uptPnlMain.Update() with no effect.
I need the changed html as I have to write some javasript functions there.
But when I write any,in document.getElementById i never found the control
0
 
existenz2Commented:
But do you see it in the UI?
0
 
Johny BravoAuthor Commented:
Yes in UI it is appearing but not when I look for the source
0
 
Johny BravoAuthor Commented:
Yes in UI it is appearing but not when I look for the source
0
 
Carl TawnSystems and Integration DeveloperCommented:
You won't see the source for anything except what was displayed originaly. The update panel dynamically writes the relevant HTML to the borwser, the View Source option only shows the markup that was sent with the last full page reload.
0
 
Johny BravoAuthor Commented:
Okk.
but when I write a javascript function on the controls on second user control,it's not working.
As I am not getting that control,what should I do then?
0
 
Carl TawnSystems and Integration DeveloperCommented:
Could you clarify "not working" a little? What isn't working, what is your javascript attempting to do?
0
 
existenz2Commented:
They have probably different names because of the injection then you are expecting in your JS.
0
 
Johny BravoAuthor Commented:
I have checkbox in the second user control which copies current address to permanent address.
When I click the checkbox,I get "Error: Object expected" for javascript.
I put debugger in the function,but it is not reached even.
Without updatepanel,it works fine
Following is the javascript function.


function FillPermanent()
    {
    
        if(document.getElementById('chkCopy').checked)
        {
        var IndexValue = $get('<%=ddlLocalCountry.ClientID %>').selectedIndex;
        var SelectedVal = $get('<%=ddlLocalCountry.ClientID %>').options[IndexValue].value;
            
        var IndexValue1 = $get('<%=ddlLocalState.ClientID %>').selectedIndex;
        var SelectedVal1 = $get('<%=ddlLocalState.ClientID %>').options[IndexValue1].value;
       
        
        var IndexValue2 = $get('<%=ddlLocalCity.ClientID %>').selectedIndex;
        var SelectedVal2 = $get('<%=ddlLocalCity.ClientID %>').options[IndexValue2].value;
      
        
        document.getElementById('<%=txtPermArea.ClientID %>').value = document.getElementById('<%= txtLocalArea.ClientID %>').value;
        document.getElementById('<%=txtPermSubUrb.ClientID %>').value = document.getElementById('<%=txtLocalSubUrb.ClientID %>').value ;
        document.getElementById('<%=txtPermPIN.ClientID %>').value = document.getElementById('<%=txtLocalPIN.ClientID %>').value ;
        
       
        var behavior = $find('<%=CDDPermCountry.ClientID %>');
        behavior.set_SelectedValue(SelectedVal);
        behavior._onParentChange(null, true);
        
         var behavior1 = $find('<%=CCDPermState.ClientID %>');
        behavior1.set_SelectedValue(SelectedVal1);
        behavior1._onParentChange(null, true);
        
         var behavior2 = $find('<%=CDDPermCity.ClientID %>');
        behavior2.set_SelectedValue(SelectedVal2);
        behavior2._onParentChange(null, true);
}

Open in new window

0
 
existenz2Commented:
If 'chkCopy' as an ASP.NET Checkbox it will have a different id, so it will return null. You will also need the ClientID from the checkbox in that case.
0
 
Johny BravoAuthor Commented:
<input type="checkbox" id="chkCopy" name="chkCopy"    onclick="FillPermanent()" />
It's an html control
0
 
Carl TawnSystems and Integration DeveloperCommented:
Try changing the start of your javascript to:

    function FillPermanent( source )
        {
   
            if(source.checked)
           {


And your checkbox to:

    <input type="checkbox" id="chkCopy" name="chkCopy"    onclick="FillPermanent(this);" />
0
 
Johny BravoAuthor Commented:
:( this is also not working.
Currently I have removed updatepanel and it is working fine.I am waiting from some solution.thanks
0
 
CtrlAltDlCommented:
Try changing the LinkButton event to OnClick.  If that doesn't work try adding also adding Triggers to the UpdatePanel.

        <Triggers>
             <asp:AsyncPostBackTrigger ControlID="lnkCorporate" EventName="Click" />
             <asp:AsyncPostBackTrigger ControlID="lnkPersonal" EventName="Click" />
        </Triggers>
    </asp:UpdatePanel>
</asp:Panel>
0
 
Johny BravoAuthor Commented:
Thanks Experts
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 10
  • 5
  • 3
  • +3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now