2015-10-08 3 views
0

У меня есть таблица (asp: Repeater), которую я хочу фильтровать на основе данных в определенном столбце. В рассматриваемом столбце содержится пользователь, создавший цитату (строку), и я хочу, чтобы пользователь видел их строки только при загрузке страницы. Я планирую сделать это, имея btn-группу наверху, у которой есть Mine и All as options, поэтому я могу переключаться между двумя режимами.Фильтр повторителя через jquery

«Все» должно быть достаточно простым, чтобы выяснить, как только я получу первый, но я не очень хорошо знаком с jQuery, и я не могу найти отличный способ сделать это. Все, что я вижу, это фильтрация по классам.

любой совет/направление будет оценено. Заранее спасибо! Не дайте мне совета/направления. Я определенно этого не хочу.

EDIT: Вот код, чтобы сделать некоторые людей счастливыми ...

function pageLoad(sender,args) 
    { 
     var rows = $('table#quotes tr').rows; 

     $('input[type=submit]#myQuotes').click(function() { 
      if (!$('#myQuotes').hasClass('active')) 
      { 
       //filter Repeater based on Owner Column 
       $('#myQuotes').toggleClass('active'); 
       $('#allQuotes').toggleClass('active'); 
      } 
     }); 
     $('input[type=submit]#allQuotes').click(function() { 
      if (!$('#allQuotes').hasClass('active')) { 
       $('#allQuotes').toggleClass('active'); 
       $('#myQuotes').toggleClass('active'); 
      } 
     }); 
    } 
</script> 

вот Ретранслятор

<asp:Repeater ID="repQuotes" runat="server" OnItemCommand="repQuotes_ItemCommand"> 
     <HeaderTemplate> 
      <table id="quotes" style="width:100%"> 
       <thead> 
        <tr style="font-weight: bold"><td>Customer</td><td>Company</td><td>Date</td><td>Owner</td><td>Number</td><td>Total</td><%if(User.IsInRole("Admin")){ %><td>Delete</td><%} %></tr> 
       </thead> 
       <tbody> 
     </HeaderTemplate> 
     <ItemTemplate> 

       <tr> 
        <asp:HiddenField ID="HiddenField1" runat="server" Value='<%#Eval("Id") %>'/> 
        <td><asp:LinkButton ID="QuoteCustomer" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Customer.Contact") %>' CommandName="Choose" CommandArgument='<%# Eval("Id") %>'/></td> 
        <td><asp:Label ID="QuoteCompany" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Customer.Company") %>' /></td> 
        <td><asp:Label ID="QuoteDate" runat="server" Text='<%#Eval("Date") %>' /></td> 
        <td><asp:LinkButton ID="Owner" runat="server" Text='<%#Eval("Owner") %>' CommandName="Email" CommandArgument='<%# Eval("Owner") %>'/></td> 
        <td><asp:Label ID="QuoteEmail" runat="server" Text='<%# Eval("PhoneNumber") %>' /></td> 
        <td><asp:Label ID="QuoteTotal" runat="server" Text='<%# GetGrandTotalString((QuoteForm.Models.Quote)Container.DataItem) %>' /></td> 
        <%if(User.IsInRole("Admin")){ %> 
        <td><asp:Button ID="Delete" runat="server" Text="Delete" class="btn btn-danger" CommandName="Delete" CommandArgument='<%# Eval("Id") %>'/></td> 
        <%} %> 
       </tr> 
     </ItemTemplate> 
     <FooterTemplate> 
      </tbody> 
      </table> 
     </FooterTemplate> 
    </asp:Repeater> 
+0

не сложно найти сортировку скриптов и плагинов ... пусть Google будет вашим другом. Вопрос слишком широк – charlietfl

+0

@charlietfl как он широк? Я дал конкретный пример элементов управления, которые я хочу использовать, и как я ожидаю, что он будет действовать? Я мог бы заставить вас фильтровать все мои попытки BS, но я не знаю, рассмотрю ли я эту полезную информацию. Я был гуглингом, и я не нашел ничего, что действительно отвечало на мой вопрос. Опубликуйте здесь, продолжайте google, посмотрите, какой из ответов на первый ответ, это не приемлемый подход? –

+0

Вопросы здесь должны быть конкретными и связаны с кодом. Поиск ресурсов кода или поиск направления их поиска не являются частью того, что такое SO, и подробно описано в справочном центре. Не пытаться быть грубым ... вот как это работает здесь – charlietfl

ответ

1

Вот один способ, которым Вы могли бы добиться этого.

В вашем коде (или серверном скрипте) добавьте функцию, которая вернет строку. Строка будет представлять класс.

public string QuoteClass(string user) 
{ 
    return (user == User.Name) ? "myquote" : "otherquote"; 
} 

Затем включите этот класс в ваш ретранслятор на уровне строки.

<ItemTemplate> 
    <tr class="<%# QuoteClass(Eval("Owner").ToString()) %>"> 
    <asp:HiddenField ID="HiddenField1" runat="server" Value='<%#Eval("Id") %>'/> 
    ... 
</ItemTemplate> 

И, наконец, в вашем JQuery, вы можете показать и скрыть эти классы строк ('myquote' и 'otherquote').

$('input[type=submit]#myQuotes').click(function() { 
     if (!$('#myQuotes').hasClass('active')) 
     { 
      //filter Repeater based on Owner Column 
      $('#myQuotes').toggleClass('active'); 
      $('#allQuotes').toggleClass('active'); 

      $('.otherquote').hide(); 
     } 
    }); 
    $('input[type=submit]#allQuotes').click(function() { 
     if (!$('#allQuotes').hasClass('active')) { 
      $('#allQuotes').toggleClass('active'); 
      $('#myQuotes').toggleClass('active'); 

      $('.otherquote').show(); 
     } 
    }); 
Смежные вопросы