Paul I think the click handler would be too late.  I think you want to do it in 
the initial pre-render

The life cycle would then be:


1.       User clicks search in search webpart, cause navigation to URL with k 
in query string

2.       Your onload/prerender runs, receives the k param, filters the dataset, 
renders the result back out to the user, sets the postbackurl on the search 
button
(k param is visible in the URL bar at this point)

3.       User clicks on the search button in your custom webpart, the postback 
url does not include the k param because it has a custom postback url.

4.       Your onload/prerender runs (there is no k param this time), normal 
search activities are processed and results rendered to the user.
(k param disappears)

If the objective is for the user ever to see the k parameter then you can add 
to the above solution with javascript to hide it using 
pushstate<https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history>:

Example:
Suppose http://mozilla.org/foo.html executes the following JavaScript:
var stateObj = { foo: "bar" };
history.pushState(stateObj, "page 2", "bar.html");
This will cause the URL bar to display http://mozilla.org/bar.html, but won't 
cause the browser to load bar.html or even check that bar.html exists.

Cheers,
              James.
________________________________
James Boman ■ Phone: +61872001100<callto:+61872001100> ■ Mobile: 
+61417857298<callto:+61417857298> ■ Skype: JDBoman<callto:JDBoman> ■ Web: 
www.ipmo.com.au<http://www.ipmo.com.au/>
From: ozmoss-boun...@ozmoss.com [mailto:ozmoss-boun...@ozmoss.com] On Behalf Of 
Paul Noone
Sent: Tuesday, 2 September 2014 9:38 AM
To: ozMOSS
Subject: RE: Passing query string param to filter expression on ObjectDataSource

That makes sense. I initially had it redirecting.

Would it be just as good to add the query string check into the click handler 
for the Search button?
if (!String.IsNullOrEmpty(queryString)) {
  Button1.PostBackUrl = queryString;
}
And would Request.QueryString.Remove("k") be just as effective?

Regards,

Paul

From: ozmoss-boun...@ozmoss.com<mailto:ozmoss-boun...@ozmoss.com> 
[mailto:ozmoss-boun...@ozmoss.com] On Behalf Of James Boman
Sent: Tuesday, 2 September 2014 9:51 AM
To: ozMOSS
Subject: RE: Passing query string param to filter expression on ObjectDataSource

Paul,

HttpContext.Current.Request.QueryString.Clear();

This will clear the querystring on the request object that is about to be 
destroyed, so is probably not going to be a strategy that will work.  You might 
want to look into modifying the response object, but probably more likely to 
succeed is something like 
this<http://blogs.msdn.com/b/tinghaoy/archive/2005/12/22/506852.aspx> where you 
can alter the query string by setting the PostBackUrl on the search button on 
your page.

Cheers,
              J.
________________________________
James Boman ■ Phone: +61872001100<callto:+61872001100> ■ Mobile: 
+61417857298<callto:+61417857298> ■ Skype: JDBoman<callto:JDBoman> ■ Web: 
www.ipmo.com.au<http://www.ipmo.com.au/>


From: ozmoss-boun...@ozmoss.com<mailto:ozmoss-boun...@ozmoss.com> 
[mailto:ozmoss-boun...@ozmoss.com] On Behalf Of Paul Noone
Sent: Tuesday, 2 September 2014 8:45 AM
To: ozMOSS
Subject: RE: Passing query string param to filter expression on ObjectDataSource

Hi Prashanth,

Redirecting to the target page and appending the query is no problem.

However the Staff Lookup web part on the target page is a custom part. I want 
to perform a search on page load if the key/value is present and then clear it 
on postback. Hope that makes sense.

Regards,

Paul

From: ozmoss-boun...@ozmoss.com<mailto:ozmoss-boun...@ozmoss.com> 
[mailto:ozmoss-boun...@ozmoss.com] On Behalf Of Prashanth Thiyagalingam
Sent: Monday, 1 September 2014 8:11 PM
To: ozMOSS
Subject: Re: Passing query string param to filter expression on ObjectDataSource

If you are using OOTB search web part then you can do this in client side, get 
the query string in js and then do a redirection to the target page with the 
query string value
Cheers,
Prashanth

Sent from my iPhone

On Sep 1, 2014, at 1:58 PM, "Paul Noone" 
<p.no...@keller.com.au<mailto:p.no...@keller.com.au>> wrote:
Hi all,

I have a custom people search web part which uses a simple form, SPGrid and a 
DataTable.

<image003.jpg>

I’d like to extend this so that people can search for staff from another page 
via a Search Box.

<image004.png> …where k=”Paul"…

What I want to do is:


1.       Check if the "k" param has a value.

2.       Use it in my query and apply it to the datasource’s filter expression.

3.       Clear the query string on postback.

I’ve added the following to the OnLoad event but it throws a NullReference 
exception.

Any help appreciated.

// Get URL and check for "k" query string param in case of search from another 
page
String txtNameFromQuery = HttpContext.Current.Request.QueryString["k"];

if(!String.IsNullOrEmpty(txtNameFromQuery))
{
       // Set txtName field to query string value for additional searches
       txtName.Text = txtNameFromQuery;

       // Define the search query
       String q = "Name LIKE '%" + txtNameFromQuery + "%'";

       // Apply query to filterexpression
       ds.FilterExpression = q;
       ViewState["FilterExpression"] = (String)ds.FilterExpression;

       // Remove any query string parameters from the URL
       HttpContext.Current.Request.QueryString.Clear();
}

Regards,

Paul


The content of this email is confidential to the intended recipient at the 
email address to which it has been addressed. It may not be disclosed to, or 
used by, anyone other than this addressee, nor may it be copied in any way. If 
received in error, please contact the author and then delete the message from 
your system.
Please note that neither Keller Australia nor the sender accepts any 
responsibility for viruses and it is your responsibility to scan the email and 
attachments (if any).
Visit http://www.keller.com.au/ for more information.

________________________________

This e-mail message has been scanned for Viruses and Content and cleared by 
MailMarshal

________________________________
_______________________________________________
Sponsored by Infotext - Amazing Search for Microsoft SharePoint - 
http://www.infotext.com/
ozmoss mailing list
ozmoss@ozmoss.com<mailto:ozmoss@ozmoss.com>
http://prdlxvm0001.codify.net/mailman/listinfo/ozmoss

The content of this email is confidential to the intended recipient at the 
email address to which it has been addressed. It may not be disclosed to, or 
used by, anyone other than this addressee, nor may it be copied in any way. If 
received in error, please contact the author and then delete the message from 
your system.
Please note that neither Keller Australia nor the sender accepts any 
responsibility for viruses and it is your responsibility to scan the email and 
attachments (if any).
Visit http://www.keller.com.au/ for more information.

________________________________

This e-mail message has been scanned for Viruses and Content and cleared by 
MailMarshal

________________________________

The content of this email is confidential to the intended recipient at the 
email address to which it has been addressed. It may not be disclosed to, or 
used by, anyone other than this addressee, nor may it be copied in any way. If 
received in error, please contact the author and then delete the message from 
your system.
Please note that neither Keller Australia nor the sender accepts any 
responsibility for viruses and it is your responsibility to scan the email and 
attachments (if any).
Visit http://www.keller.com.au/ for more information.

________________________________

This e-mail message has been scanned for Viruses and Content and cleared by 
MailMarshal

________________________________
_______________________________________________
Sponsored by Infotext - Amazing Search for Microsoft SharePoint - 
http://www.infotext.com/
ozmoss mailing list
ozmoss@ozmoss.com
http://prdlxvm0001.codify.net/mailman/listinfo/ozmoss

Reply via email to