How can i maintain pagination with filter using tableselect?
The search form method type is post thats why when you are submitting the search form the form values are sending as post therefore the form values are coming properly for  first page. When your are clicking on second page the form state values are reseting with new form state values as form has default value.

So rather than using post method form I will suggest to use get method type form for search so that the search keyword will always persist in url.

So you have to add 

$form['#method'] = 'get';


Access all filtered values using $_GET like

$form['search_ew_partner'] = array(
            '#type' =&gt; 'textfield',
            '#prefix' =&gt; '&lt;div class="serachOuter "&gt;&lt;div class="grayBg"&gt;&lt;div class="searchInner clearfix"&gt;&lt;div class="searchField pull-left"&gt;',
            '#suffix' =&gt; '&lt;/div&gt;',
            '#default_value'=&gt; $_GET['search_ew_partner'],
            '#attributes' =&gt; array(
                'placeholder' =&gt; 'Search by name'
            )
        );


And change your code like

if(!empty($_GET['search_ew_partner'])){
            $query-&gt;condition('ept.name', '%' . $_GET['search_ew_partner'] . '%', 'LIKE');
        }