This is a migrated thread and some comments may be shown as answers.

Change the querystring after partial postback

1 Answer 234 Views
Ajax
This is a migrated thread and some comments may be shown as answers.
Jacques
Top achievements
Rank 1
Jacques asked on 13 Mar 2018, 03:23 PM

 

The code is posted below. When I click on the selection list I want the id of the selection list item to appear in the query string of browser after a partial postback. Is this possible?

 

 

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="telerik.aspx.cs" Inherits="Webtest.telerik" %><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server">     <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>     <title></title>     <script>         function getQueryStringValue(key) {             return decodeURIComponent(window.location.search.replace(new RegExp("^(?:.*[&\\?]" + encodeURIComponent(key).replace(/[\.\+\*]/g, "\\$&") + "(?:\\=([^&]*))?)?.*$", "i"), "$1"));         }         function addIdtoQueryString(itemId) {             var querystring = getQueryStringValue("filter");                          if(querystring=="")             {                 querystring = itemId;             }             else             {                 querystring = querystring + "+" + itemId;             }             return querystring;         }         function deleteIdFromQueryString(itemId) {             var querystring = getQueryStringValue("filter");             var ids = querystring.split("+");             var newQuerystring = "";             for (var i = 0; i < ids.length; i++) {                 console.log(ids[i]);             }             var indexOfItemToDelete = ids.indexOf(itemId);             ids.splice(indexOfItemToDelete, 1);             for (var i = 0; i < ids.length; i++) {                 if (i != 0) {                     newQuerystring += "+";                 }                 newQuerystring += ids[i];             }             return newQuerystring;         }         function itemClicked(list, args) {             var querystring ="";             if (args.get_item().get_checked() == true)             {                 querystring = addIdtoQueryString(args.get_item().get_value());             }             else             {                 querystring = deleteIdFromQueryString(args.get_item().get_value());             }             if (querystring != "")                 document.forms["form1"].action = "?filter=" + querystring;             else                 document.forms["form1"].action = "?";             alert(document.forms["form1"].action);         }     </script></head><body>     <form id="form1" runat="server">                         <telerik:RadScriptManager ID="rsManager" runat="server" AsyncPostBackTimeout="7200" />                 <telerik:RadAjaxManager ID="raManager" runat="server" EnableAJAX="true" />             <telerik:RadAjaxManagerProxy ID="rampCommodity" runat="server" >         <ajaxsettings>                <telerik:AjaxSetting AjaxControlID="paCommodity">                 <UpdatedControls>                     <telerik:AjaxUpdatedControl ControlID="paCommodity"></telerik:AjaxUpdatedControl>                 </UpdatedControls>             </telerik:AjaxSetting>         </ajaxsettings>     </telerik:RadAjaxManagerProxy>             <asp:Panel ID="paCommodity" runat="server">     <div>          <telerik:RadCheckBoxList runat="server" ID="Questionnaire" AutoPostBack="true"  CssClass="content" OnSelectedIndexChanged="Questionnaire_SelectedIndexChanged">              <ClientEvents OnItemClicked="itemClicked">              </ClientEvents>              <Items>                 <telerik:ButtonListItem Text="Game apps (puzzles, charades, etc.)" Value="0"  />                 <telerik:ButtonListItem Text="Sports apps (sports schedules, scores, headlines, etc.)" Value="1" />                 <telerik:ButtonListItem Text="Travel apps (airplane tickets, tourist guides, transportation info, etc.)" Value="2" />                 <telerik:ButtonListItem Text="News apps (news, national headlines, technology announcements, etc.)" Value="3" />                 <telerik:ButtonListItem Text="Entertainment apps (puzzles, charades, etc.)" Value="4" />                 <telerik:ButtonListItem Text="Social networking apps (location check-ins, friend status updates, etc.)" Value="5" />                 <telerik:ButtonListItem Text="Weather apps (local forecasts, natural disaster updates, etc.)" Value="6" />                 <telerik:ButtonListItem Text="Other" Value="7" />             </Items>         </telerik:RadCheckBoxList>              </div>                 </asp:Panel>          </form></body></html>

1 Answer, 1 is accepted

Sort by
0
Accepted
Attila Antal
Telerik team
answered on 16 Mar 2018, 02:03 PM
Hi Jacques,

I assume you would like to update the QueryString once the postback has finished, is that correct?

In that case, you can try to subscribe the RadAjaxManager to its ResponseEnd event, which will then update the QueryString once the response from the server has ended.
<telerik:RadAjaxManager ID="raManager" runat="server" EnableAJAX="true" ClientEvents-OnResponseEnd="responseEnd" />

JavaScript - ResponseEnd event handler
<script>
    function responseEnd(sender, args) {
        window.location.href = document.forms["form1"].action;
    }
</script>

Please check out the attached sample page demonstrating the scenario described above and see if that works for you.

I look forward to heaving your feedback on this.

Kind regards,
Attila Antal
Progress Telerik
Try our brand new, jQuery-free Angular components built from ground-up which deliver the business app essential building blocks - a grid component, data visualization (charts) and form elements.
Tags
Ajax
Asked by
Jacques
Top achievements
Rank 1
Answers by
Attila Antal
Telerik team
Share this question
or