Gridview には 100 人の顧客が含まれており、各ページには 10 人の顧客が含まれています。
ユーザーが A をクリックした場合、A で始まるすべての顧客名を一覧表示します。
助けてください。
Gridview には 100 人の顧客が含まれており、各ページには 10 人の顧客が含まれています。
ユーザーが A をクリックした場合、A で始まるすべての顧客名を一覧表示します。
助けてください。
Faster and 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();
});
});
SqlDataSource を使用している場合は、SelectCommand でパラメーターを指定できます。
SelectCommand="SELECT * FROM [Genre] WHERE [Name] LIKE @FirstLetter+'%'"
たとえば、内にパラメータを追加する必要があります
<SelectParameters>
<asp:Parameter Name="FirstLetter" Type="String" />
</SelectParameters>
コードビハインドでは、パラメーターの値を設定できます。
SqlDataSource1.SelectParameters["FirstLetter"].DefaultValue = filterletter;
アプローチ #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
グリッドビューの上に 26 個のボタン + グリッドビューの上にあるすべてのボタンを 1 つ持つことができます。
26 個のボタンすべてについて、グリッドビューのデータをフィルター処理することができますbuttonAPLHA_Click
。sender.tag
たとえば、buttonAPLHA_Click
あなたの中にいることができます。
GridView.datasource = GetDataByAplha(Sender.Tag.Tostring());
私が説明したいことが理解できることを願っています。
このサンプル クエリを使用してください。
string query = "select from tbl_name where name like '%" + dropdownlist.SelectedValue + "'";