Фильтр вида сетки - PullRequest
       23

Фильтр вида сетки

3 голосов
/ 29 апреля 2010

У меня есть сетка, которую я связываю через код, я хочу отфильтровать сетку на основе значения, указанного пользователем в текстовом поле.

Было бы здорово, если бы я мог фильтровать сетку без обратной передачи.

Пожалуйста, помогите!

Заранее спасибо

Ответы [ 3 ]

5 голосов
/ 29 апреля 2010

вы можете запустить выражение фильтра

<asp:sqldatasource id="articles" runat="server"
   connectionstring="<%$ ConnectionStrings:aspa %>" 
   selectcommand="SELECT title, url, added, updated FROM aspx_articles ORDER BY title" 
   filterexpression="title LIKE '%{0}%' or url LIKE '%{0}%'">
   <filterparameters>
      <asp:controlparameter controlid="searchBox" propertyname="Text" />
   </filterparameters>
</asp:sqldatasource>

или так

Есть ли у вас TextBox вне GridView, и когда вы вводите в него данные и нажимаете кнопку, GirdView должен фильтровать эти данные?

Если это так, убедитесь, что ваша команда выбора может принимать параметр со значением, по которому вы хотите фильтровать. Добавьте ControlParameter к коллекции SelectParameters элемента управления DataSource (если вы используете элемент управления DataSource).

Вот пример, который использует базу данных Northwind, возможно, это вам поможет:

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <asp:Button ID="Button1" runat="server" Text="Button" />
        <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False"
            DataKeyNames="ProductID" DataSourceID="SqlDataSource1" ShowFooter="True">
            <Columns>
                <asp:CommandField ShowSelectButton="True" />
                <asp:BoundField DataField="ProductID" HeaderText="ProductID" InsertVisible="False"
                    ReadOnly="True" SortExpression="ProductID" />
                <asp:BoundField DataField="ProductName" HeaderText="ProductName" SortExpression="ProductName" />
                <asp:BoundField DataField="UnitsInStock" HeaderText="UnitsInStock" SortExpression="UnitsInStock" />
                <asp:BoundField DataField="UnitPrice" HeaderText="UnitPrice" SortExpression="UnitPrice" />
            </Columns>
        </asp:GridView>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
            SelectCommand="SELECT [ProductID], [ProductName], [UnitsInStock], [UnitPrice] FROM [Alphabetical list of products] WHERE ([ProductName] LIKE '%' + @ProductName + '%')">
            <SelectParameters>
                <asp:ControlParameter ControlID="TextBox1" DefaultValue="%" Name="ProductName" PropertyName="Text"
                    Type="String" />
            </SelectParameters>
        </asp:SqlDataSource>

коды найдены здесь http://forums.asp.net/p/1034014/2904713.aspx

2 голосов
/ 29 апреля 2010

Если вы используете пейджинг, я бы порекомендовал использовать что-то еще (например, dataView библиотеки Microsoft Ajax). Поскольку разбиение на страницы gridview и фильтрация на стороне клиента не слишком хорошо сочетаются. Но если вы не делаете пейджинг, вы можете сделать что-то похожее на это или это .

1 голос
/ 29 апреля 2010

Вид сетки сделан для манипуляций во время обратной записи. Если бы вы делали это полностью на стороне клиента, вы бы использовали набор JavaScript, который работал бы на любой таблице, не ограничиваясь видом сетки. Если бы это был я, я бы просто использовал AJAX, обернув вид сетки и текстовое поле на панели обновлений. Для конечного пользователя поведение такое же.

РЕДАКТИРОВАТЬ, чтобы включить Пример кода:

<asp:ScriptManager ID="ScriptManager1" AllowCustomErrorsRedirect="false"  runat="server"></asp:ScriptManager>

  <asp:UpdatePanel ID="UpdatePanel1"  runat="server">
    <ContentTemplate>

            <asp:TextBox runat="server" ID="txtFilterString" ></asp:TextBox>
            <asp:Button runat="server" ID="btnFilter" Text="FilterResults" onclick="btnFilter_Click" /> 

            <asp:GridView runat="server" ID="grdResults"
                DataKeyNames="Id"
                AllowSorting="true" AllowPaging="true" PageSize="20" 
                PagerSettings-Mode="NumericFirstLast">
                    <Columns>
                        .....
                    </Columns>          
                </asp:GridView>


  </asp:UpdatePanel>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...