【问题标题】:how to filtering Gridview data如何过滤 Gridview 数据
【发布时间】:2012-12-01 09:01:03
【问题描述】:

Gridview包含100个客户,每页10个客户,如何按字母顺序过滤;

如果用户点击A,则列出所有以A开头的客户名称

请帮忙。

【问题讨论】:

    标签: c# asp.net validation gridview


    【解决方案1】:

    如果你使用的是 SqlDataSource,你可以在 SelectCommand 中指定一个参数,例如

    SelectCommand="SELECT * FROM [Genre] WHERE [Name] LIKE @FirstLetter+'%'" 
    

    您必须在 中添加参数,例如

    <SelectParameters>
        <asp:Parameter Name="FirstLetter" Type="String" />
    </SelectParameters>
    

    在你后面的代码中,你可以设置参数的值,例如

    SqlDataSource1.SelectParameters["FirstLetter"].DefaultValue = filterletter;
    

    【讨论】:

      【解决方案2】:

      this link 中提到了 Faster 和 jQuery 方法

      $(document).ready(function() {
          $('#<%=lblNoRecords.ClientID%>').css('display','none');
      
          $('.links').click(function(e)
          {
              $('#<%=lblNoRecords.ClientID%>').css('display','none'); 
      
              var lnkText = $(this).text().toLowerCase();
              var iCounter = 0;
      
              $("#<%=gdRows.ClientID%> tr:has(td)").each(function() {
                  var cell = $(this).find("td:eq(1)").text().toLowerCase();
                  if(lnkText != 'all')
                  {
                      if(cell.indexOf(lnkText) != 0)
                      {
                          $(this).css('display','none');
                      }
                      else
                      {
                          $(this).css('display','');
                          iCounter++;
                      }    
                  }
                  else
                  {
                      $(this).css('display','');
                      iCounter++;
                  }
              });
      
              if(iCounter == 0)
              {
                  $('#<%=lblNoRecords.ClientID%>').css('display','');
              }
              e.preventDefault();
          });
      });
      

      【讨论】:

        【解决方案3】:

        方法#1

        ASPX 标记:

        <asp:Repeater ID="rptAlpha" runat="server" OnItemCommand="rptAlpha_ItemCommand">
            <ItemTemplate>
                <asp:LinkButton ID="lbAlpha" runat="server" 
                     CommandArgument='<%# Container.DataItem.ToString() %>'><%#Container.DataItem.ToString() %></asp:LinkButton>
            </ItemTemplate>
        </asp:Repeater>
        <br />
        <asp:GridView ID="GridView1" runat="server" DataSourceID="ObjectDataSource1">
        </asp:GridView>
        <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" 
             OldValuesParameterFormatString="original_{0}"
             OnSelecting="ObjectDataSource1_Selecting" SelectMethod="Load" TypeName="Your.TypeName.Here">
             <SelectParameters>
                 <asp:Parameter Name="Filter" Type="Object" />
             </SelectParameters>
         </asp:ObjectDataSource>
        

        C#代码

        protected void Page_Load(object sender, EventArgs e)
        {
                if (IsPostBack)
                    return;
        
                BindAlphaRepeater();
        }
        
        private void BindAlphaRepeater()
        {
                string[] alphabet = {"a", "b", "c", "d", "e" };
        
                rptAlpha.DataSource = alphabet;
                rptAlpha.DataBind();
        }
        
        protected void rptAlpha_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
                string filterleter = e.CommandArgument as string;
        
                if (filterleter == null)
                    return;
        
                ViewState["filterletter"] = filterleter;
        
                GridView1.DataBind();
        }
        
        protected void ObjectDataSource1_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
        {
                // This is designed to return null, you might want to change it to a default value
                e.InputParameters["Filter"] = ViewState["filterletter"] as string     
        }
        
        protected void Button1_Click(object sender, EventArgs e)
        {
                Response.Write("Paging click");
                GridView1.DataBind();
        }
        

        解释:

        使用中继器绑定字母并使用该Repeatet 的OnItemCommand 来获取数据并根据选定的字母绑定网格视图。

        方法 #2

        gridview 顶部可以有 26 个按钮 + gridview 顶部有一个 All 按钮。

        对于所有 26 个按钮,您可以使用 buttonAPLHA_Click 等常用方法,并且基于 sender.tag 您可以过滤 gridview 的数据。

        例如,在您的buttonAPLHA_Click 中,您可以拥有。

        GridView.datasource = GetDataByAplha(Sender.Tag.Tostring());
        

        希望你明白我想要解释的内容。

        【讨论】:

          【解决方案4】:

          使用这个示例查询..

          string query = "select from tbl_name where name like '%" + dropdownlist.SelectedValue + "'";

          【讨论】:

          • 字母必须在 % 符号之前,如 dropdownlist.SelectedValue + '%',而不是相反。
          猜你喜欢
          • 2014-11-28
          • 2012-05-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-02-17
          • 1970-01-01
          • 1970-01-01
          • 2019-03-26
          相关资源
          最近更新 更多