Showing posts with label resides. Show all posts
Showing posts with label resides. 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

Wednesday, March 21, 2012

Wrong EventName triggers. How come?

Hi

In the project I have two GridViews: master GridView1 and slave GridView2. The latter resides on the UpdatePanel with properties as follows:

AsynchPostBack ControlID=GridView1

EventName=SelectedIndexChanging

It works fine: if I select a row from GridView1, partial postback takes place and GridView2 re-populated

But! If I set GridView1.AllowSorting=true and click on any of GridView1 titles, it goes again with the partial postback! I don't have my GridView1.Sorting event handler in the list of UpdatePanel.ControlID but it acts as well it is.

How can I prevent a partial postpack in the case above? I need my page be sent as full old-way post back, when click on the GridView1 headers.

Hi Mabanza,

Mabanza:

But! If I set GridView1.AllowSorting=true and click on any of GridView1 titles, it goes again with the partial postback! I don't have my GridView1.Sorting event handler in the list of UpdatePanel.ControlID but it acts as well it is.

this sounds like you've let UpdatePanels UpdateMode on the default valueAllways. Please set it toConditional.


This relates to the children updates. Anyway, I did, no effect.

This boiled down to the follows, actually. I can not register the title (which is LinkButton on the server) as

RegisterPostBackControl(LinkButton);

It works the same wrong way - as partial post back.

How to register LinkButton for full postback?

Thanks.


May try use another way to go. Instead declaring the SelectedIndexChanging event as trigger, use in the SelectedIndexChanched event updatepanelsUpdate() method. eg.

void GridView1_SelectedIndexChanged(Object sender, EventArgs e){// Your logic here UpdatePanel1.Update();}

So you be sure, updatepanel only updates on changing the selected index from your gridview.


Good idea. But it does not suit me. I have

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequest) andadd_beginRequest(StartRequest) hooked.

If I update panel on the server side, I won't be able to use that, right?

Thanks.


Mabanza:

If I update panel on the server side, I won't be able to use that, right?

not sure about that. To put it bluntly, i'm not a fan from javascriptCool Anyway.

Mabanza:

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequest) andadd_beginRequest(StartRequest) hooked.

I dont now where in the page lifecycle these events are fired, but for updating the gridview after page index changing, a roundtrip to the server is required. From my point, let the javascript beginRequest and endRequest events still active, give the UpdatePanel.Update method a try and look whats up on your page.