2012-12-01 117 views
1

Gridview包含100个客户,每个页面10个客户,如何过滤Alphabatically;如何过滤Gridview数据

如果用户点击一个,然后列出了以A

开始请帮助所有的客户名称。

回答

0

方法#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(); 
} 

说明:

用户绑定的字母和使用OnItemCommand的一个中继器重复提取数据并绑定t他根据选定的字母表进行网格视图。

方法2

可以对GridView控件的前26个按键+为所有在GridView上的最上面的一个按钮。

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

例如在你的buttonAPLHA_Click里面你可以拥有。

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

希望你得到我想解释的。

-1

使用此示例查询..

串查询= ' “”'从tbl_name其中名称等+ dropdownlist.SelectedValue +%选择“';

+0

信中提到必须拿出%符号前,像dropdownlist.SelectedValue + '%',而不是周围的其他方式。 –

0

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

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

您将不得不在例如

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

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

​​
0

更快,jQuery的方法是this link

$(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(); 
    }); 
});