【问题标题】:Filter gridview过滤网格视图
【发布时间】:2010-04-29 18:27:41
【问题描述】:

我有一个通过后面的代码绑定的gridview,我想根据用户在文本框中给出的值过滤gridview。

如果我能够在没有任何回发的情况下过滤网格视图,那就太好了。

请帮忙!

提前致谢

【问题讨论】:

    标签: asp.net gridview


    【解决方案1】:

    你可以运行过滤表达式

    <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>
    

    或者这样

    您在 GridView 之外是否有一个 TextBox,当您在其中输入数据并按下按钮时,应该对 GridView 进行过滤?

    如果是这样,请确保您的选择命令可以使用您要过滤的值的参数。将 ControlParameter 添加到 DataSource 控件的 SelectParameters 集合中(如果您使用 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

    【讨论】:

    • 嗨贾斯汀,感谢您的快速响应,但我在服务器端绑定gridview而不是sql数据源。
    • @Zerotoinfinite c-sharpcorner.com/UploadFile/khaledrawy/… 对您的 ajax 更新面板问题作出了回应。我不确定它是如何使用的,我仍在阅读它。但听起来很像 MrGumbe 的帖子
    【解决方案2】:

    如果您使用分页,我建议您使用其他东西(例如Microsoft Ajax Library's dataView)。因为 gridview 分页和客户端过滤不会很好地融合在一起。但是,如果您不进行分页,则可以执行类似于 thisthis 的操作。

    【讨论】:

      【解决方案3】:

      网格视图用于在回发期间进行操作。如果您要完全在客户端执行此操作,您将使用适用于任何表格的 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>
      

      【讨论】:

      • 对我来说似乎是一个解决方案。你能简单地解释一下我必须做什么吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-17
      • 2012-03-29
      • 1970-01-01
      • 2020-09-28
      • 2016-11-26
      • 2017-06-26
      相关资源
      最近更新 更多