2012-12-01 119 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(); 
    }); 
});