Showing posts with label fire. Show all posts
Showing posts with label fire. Show all posts

Monday, March 26, 2012

Will calling .click() fire an updatepanel Trigger?

This might seem a bit silly but...

Basically, I have a javascript function which calls the .click() method of a button, this button resides outside of any UpdatePanels

This button is also set as a trigger for one of my UpdatePanel controls.

My problem is, the button click runs fine, the server side click event fires ok and rebinds some data for a GridView which is inside the UpdatePanel, but the UpdatePanel does not update its contents.

Do you have to physically click the button with your mouse to cause the Trigger? Or should the programmatic javascript call to click() work?

No will not cause it trigger, you need a postback for that, not a javascript call


You cantrigger an UpdatePanel refresh from the client side, using __doPostBack().

Hi

The programmatic javascript call to click() should work, you must do something wrong.

Look this sample:

<%@. Page Language="C#" %>

<%@. Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
<link href="http://links.10026.com/?link=StyleSheet.css" mce_href="StyleSheet.css" rel="stylesheet" type="text/css" />

<script type="text/javascript">
var styleToSelect;
function onOk() {
$get('Paragraph1').className = styleToSelect;
}
</script>

</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<p id="Paragraph1">
GetContentFillerTextGetContentFillerTextGetContentFillerTextGetContentFillerText</p>
<br />
<ajaxToolkit:Accordion ID="Accordion1" runat="server" ContentCssClass="grey" FadeTransitions="false"
FramesPerSecond="25" TransitionDuration="250" HeaderCssClass="dimgreen" EnableViewState="true">
<Panes>
<ajaxToolkit:AccordionPane runat="server" ID="PaneOne">
<Header>
AccordionPane0
</Header>
<Content>
<a href="http://links.10026.com/?link=javascript:return false" onclick="javascript: LinkButton1.click()">Click here to change
the paragraph style</a>

</Content>
</ajaxToolkit:AccordionPane>
</Panes>
</ajaxToolkit:Accordion>
<div style="visibility: hidden">
<asp:LinkButton ID="LinkButton1" runat="server" Text="Click here to change the paragraph style" /></div>
<asp:Panel ID="Panel1" runat="server" Style="display: none" CssClass="modalPopup">
<asp:Panel ID="Panel3" runat="server" Style="cursor: move; background-color: #DDDDDD;
border: solid 1px Gray; color: Black">
<div>
<p>
Choose the paragraph style you would like:</p>
</div>
</asp:Panel>
<div>
<p>
<input type="radio" name="Radio" id="RadioA" checked="checked" onclick="styleToSelect = 'sampleStyleA';" />
<label for="RadioA" class="sampleStyleA" style="padding: 3px;">
Sample paragraph text</label>
</p>
<p>
<input type="radio" name="Radio" id="RadioB" onclick="styleToSelect = 'sampleStyleB';" />
<label for="RadioB" class="sampleStyleB" style="padding: 3px;">
Sample paragraph text</label>
</p>
<p>
<input type="radio" name="Radio" id="RadioC" onclick="styleToSelect = 'sampleStyleC';" />
<label for="RadioC" class="sampleStyleC" style="padding: 3px;">
Sample paragraph text</label>
</p>
<p>
<input type="radio" name="Radio" id="RadioD" onclick="styleToSelect = 'sampleStyleD';" />
<label for="RadioD" class="sampleStyleD" style="padding: 3px;">
Sample paragraph text</label>
</p>
<p style="text-align: center;">
<asp:Button ID="OkButton" runat="server" Text="OK" />
<asp:Button ID="CancelButton" runat="server" Text="Cancel" />
</p>
</div>
</asp:Panel>
<ajaxToolkit:ModalPopupExtender ID="ModalPopupExtender" runat="server"TargetControlID="LinkButton1"
PopupControlID="Panel1" BackgroundCssClass="modalBackground" OkControlID="OkButton"
OnOkScript="onOk()" CancelControlID="CancelButton" DropShadow="true" PopupDragHandleControlID="Panel3" />
</div>
</form>
</body>
</html>

Thanks

Windows Media Player incompatible with AJAX?

Here's an odd one. I have the Windows Media Player imbedded in a page. I have links on the page which fire a javascript to set the player url and start the player. So far so good. Everything works.

Now add the AJAX bits and make the links asp:LinkButtons. I fire the javascript on the OnClientClick method. The <object> tags for the video player are outside of the UpdatePanel so it doesn't get refreshed. Remember, I want to update it with javascript. So when I click a link, the player loads the correct URL, but will not play! I have to press the play button manually to get it to play.

So what is AJAX doing that prohibits WMP from starting the stream? I have tried starting the player with an addtional command (document.Player.controls.play()) and that doesn't work either. Yet as soon as I remove the AJAX bits, it works just fine. Here's my test .aspx page (minus the code behind page. I'm not triggering any server code in this example). Also, the reason I'm using a LinkButton control is because in my real app, the video links are being displayed in a datagrid.

"C#" AutoEventWireup="true" CodeFile="vidTest.aspx.cs" Inherits="VideoLibrary_vidTest" %> 
1<%@dotnet.itags.org. Page Language="C#" AutoEventWireup="true" CodeFile="vidTest.aspx.cs" Inherits="VideoLibrary_vidTest" %>2<%@dotnet.itags.org. Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Namespace="System.Web.UI" TagPrefix="asp" %>3<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">4<html xmlns="http://www.w3.org/1999/xhtml">5<head runat="server">6<title>Untitled Page</title>78<script type="text/javascript" language="javascript">9function StartPlayer(filename)10{11document.Player.url = "mms://communitymedical.org/" + filename;12document.Player.controls.play();13}14</script>1516</head>17<body id="link">18<form id="form1" runat="server">19<asp:ScriptManager ID="ScriptManager1" runat="server">20</asp:ScriptManager>21<div>22<object id="Player" height="320" width="320" classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6">23<param name="autoStart" value="True">24</object>25<br />26<br />27<asp:UpdatePanel ID="UpdatePanel1" runat="server">28<ContentTemplate>29<asp:LinkButton ID="linkButton" runat="server" OnClientClick="javascript:StartPlayer('flex.wmv')">30Click Me</asp:LinkButton>31</ContentTemplate>32</asp:UpdatePanel>33</div>34</form>35</body>36</html>
"text/javascript" language="javascript">function StartPlayer(filename){document.Player.url ="mms://communitymedical.org/" + filename;//document.Player.controls.play();}</script></head><body id="link"><form id="form1" runat="server"><asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager><div><object id="Player" height="320" width="320" classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6"><param name="autoStart" value="True"></object><br /><br /><asp:UpdatePanel ID="UpdatePanel1" runat="server"><ContentTemplate><asp:LinkButton ID="linkButton" runat="server" OnClientClick="javascript:StartPlayer('flex.wmv')">Click Me
"text/javascript" language="javascript">11function StartPlayer(filename)12{13document.Player.url ="mms://communitymedical.org/" + filename;14//document.Player.controls.play();15}16</script>1718</head>19<body id="link">20<form id="form1" runat="server">21<asp:ScriptManager ID="ScriptManager1" runat="server">22</asp:ScriptManager>23<div>24<object id="Player" height="320" width="320" classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6">25<param name="autoStart" value="True">26</object>27<br />28<br />29<asp:UpdatePanel ID="UpdatePanel1" runat="server">30<ContentTemplate>31<asp:LinkButton ID="linkButton" runat="server" OnClientClick="javascript:StartPlayer('flex.wmv')">32Click Me333435363738

the player is compatible, but the onclientclick in an update panel isn't. look at the client script manager to register a script block in the update panel.

-- bruce (sqlwork.com)


The thing is, the script actually fires. The player knows what video it's supposed to play. If I put an alert() command in the script, it will fire the alert. So I know the script is being executed. I just don't understand why the player won't PLAY, when it plays fine without AJAX enabled.

But I'm willing to try workarounds... how do I register a script block in the update panel? Is that different from just using Page.ClientScript.RegisterScriptBlock(...)?

Thanks

D


Got it fixed. That was it. Once I registered the script to the UpdatePanel, the video player worked fine. I can't say that I understand it.... but it works now. Thanks!

Dana

Whiplash:

The thing is, the script actually fires. The player knows what video it's supposed to play. If I put an alert() command in the script, it will fire the alert. So I know the script is being executed. I just don't understand why the player won't PLAY, when it plays fine without AJAX enabled.

But I'm willing to try workarounds... how do I register a script block in the update panel? Is that different from just using Page.ClientScript.RegisterScriptBlock(...)?

Thanks

D