Click here to Skip to main content
15,887,841 members
Please Sign up or sign in to vote.
5.00/5 (1 vote)
Hye..

I have 2 pages where I want to pass linkbutton value from iframe to its parent page.

Parent Page

<div style="visibility:hidden"><asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" UseSubmitBehavior="false" /></div>


vb code:

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
     
End Sub

iFrame Page

XML
<asp:TemplateField>
   <ItemTemplate>
<asp:LinkButton id="linkButton1"  runat="server" Text='<%# Eval("DESC_T")%>' CommandName = "ViewHeader" OnClientClick="javascript:window.parent.document.getElementById('Button1').click();"></asp:LinkButton>

 </ItemTemplate>
                 </asp:TemplateField>


I want to pass linkbutton text (in iFrame page) (<%# Eval("DESC_T")%>) on its click using onclientclick to parent page. How can I modify my code above?
Posted

Hello Snamyna,

You can do so by adding a TriggerPostback client side JavaScript function in parent page and invoke that from the onClientClick event of your LinkButton.
JavaScript
function TriggerPostBack(control, arg){
    __doPostBack(control, arg);
}

Your OnClientClick function can be re-written as
ASP.NET
<asp:LinkButton id="linkButton1"  runat="server" Text='<%# Eval("DESC_T")%>' CommandName = "ViewHeader" OnClientClick="javascript:window.parent.TriggerPostBack('linkButton1', YOUR ARGUMENT);"></asp:LinkButton>

Regards,
 
Share this answer
 
Comments
snamyna 1-Nov-13 21:16pm    
Hi Prasad,
Thanks for your response.
It is a way easier than my method. :)

When I add '<%# Eval("FORMID_T") %>' in "YOUR ARGUMENT " as you mentioned like this,
<asp:LinkButton id="linkButton1" runat="server" Text='<%# Eval("DESC_T")%>' CommandName = "ViewHeader" OnClientClick="javascript:window.parent.TriggerPostBack('linkButton1', '<%# Eval("FORMID_T") %>');"> , it says The server tag is not well formed.

But when I changed it to html anchor, it works.
<%# Eval("DESC_T")%>
(How to enforce the code to be pasted as plain html not code block?)

Unfortunately, I need to use asp control to execute row command function. How should I change my code?
snamyna 2-Nov-13 1:34am    
Hye!

I've changed the code to
OnClientClick='<%#Eval("FORMID_T","javascript:window.parent.TriggerPostBack(this,'{0}');")%>'

and it works!
Now i know, there is special method to call value from EVAL if it is in onclientclick. Thanks for your help! :)
Prasad Khandekar 6-Nov-13 5:27am    
You are welcome!
your approach is correct but clicking the 'Button1' from the iFramePage is not necessary.

JavaScript
function passValue(obj) {
    console.log(obj);
    window.parent.document.getElementById('Field').innerHTML = obj.innerText ;
}


the above function you can call it from OnClientClick in your iframe page by writing OnClientClick="passValue(this)"
It will put the content of your linkButton in a div with id 'field' in your main page.
After that if you need to call the server code then you can very well call the 'Button click' from the 'passValue' function.
 
Share this answer
 
v2
Comments
snamyna 1-Nov-13 21:51pm    
Hye srikantsahu,
Thanks for your response.
However, I've tried your code but Im facing an issue to bind database value in onclientclick as my comment above.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900