The other day, I wanted to filter a list view web part, triggered from a drop down list on my page. I couldn't connect to a standard out of the box filter web part because the dropdown values were populated with values retrieved from a web service. Every time I select a new value from the drop down, I wanted to automatically filter the sharepoint list with that value, without doing a full postback and refreshing the page (similar to the effect of when you filter a list from the list column options).
To start things off:
Copy the outer anchor tag's onclick event (this event triggers a partial post back to the page)
To start things off:
- I created a document library and created a new column called "DocType" with a few choices:
- Letter
- Memo
- I made sure the DocType column appeared on my default view (this will be the view I use to do my filtering later)
- I uploaded a few documents into my library, and provided the DocType for each
- On my site page, I added the list view web part for this Document Library
- From the AJAX Options under the list view web part settings:
- Check off Enable Asynchronous Update
- Show Manual Refresh Button
- Using IE developer tools, find the element for the refresh icon with the id of ManualRefresh
- Add a form web part to the same page
- Grab the ID in the __doPostBack call and replace it in this script, and put the script into the form web part and save.
<div style="width:400px; height:20px; margin:0px auto; padding-bottom:20px; font-family:Verdana,Arial,Helvetica,Sans-serif;font-size:10pt;">
Select Doc Type:
<select id="ddlDocType">
<option></option>
<option>Letter</option>
<option>Memo</option>
</select>
</div>
<script type='text/javascript' src='/assets/js/jquery-1.7.2.min.js'></script>
<script type="text/javascript">
$(document).ready(function(){
//on the dropdown change event, call FilterMyList
$("#ddlDocType").change(function(){
FilterMyList();;
});
});
function FilterMyList()
{
//get the selected value of the drop down
var selectedDocType = $("#ddlDocType").val();
if(selectedDocType == "" )
{
//clears the filter
__doPostBack("ctl00$m$g_95403266_84ab_485e_be73_8857b5d90f63$ctl02", "NotUTF8;__filter={DocType=" + "##dvt_all##" + "}");
return;
}
//filters the list on the selected docType
__doPostBack("ctl00$m$g_95403266_84ab_485e_be73_8857b5d90f63$ctl02", "NotUTF8;__filter={DocType=" + selectedDocType + "}");
}
</script>
Now, when you select a value from the dropdown, it should automatically filter the list without a full postback




