我有一组用户可以选择的类别。 每个类别都有一组用户可能想要过滤的不同属性。
每个类别中的项目都显示在网格视图中。每个类别都有自己的网格视图网页。
当显示网格视图时,我想要一个侧栏来显示与该类别相关的属性。用户应该能够选择要过滤的属性。并按属性上的最小/最大值进行过滤。
我正在尝试确定侧边栏中应该包含哪些控件,以及如何动态填充控件集(假设每个控件都是不同的属性过滤器)。
例如,查看Amazon books侧边栏有动态生成的过滤器列表,这些过滤器与书籍类别有关。
其他不错的功能是:
更改属性列表,以便只显示将产生结果的属性/过滤器。
让每个属性/过滤器显示选中后将显示的结果数。
答案 0 :(得分:3)
我真的不知道你将如何加载gridview,但这就是我能够做类似的事情。
假设您通过SQL查询将数据传输到GridView:
select property1, property2, property3, ...., from categoryA
侧视图中的任何内容都应该以某种方式考虑到您的SQL查询,每个都有自动回发。
<asp:TextBox runat="server" AutoPostBack="true" ID="Property1" />
所以当它回发到服务器时,在你的页面加载方法中:
protected void Page_Load(object sender, EventArgs e)
{
if(IsPostBack)
{
UpdateCategoryQuery();
}
}
在您的UpdateCategoryQuery()方法上:
private void UpdateCategoryQuery()
{
if(Property1.Text != "")
{
string sql = "where property1 = '" + Property1.Text + "'";
}
//... and go on down the list.
}
最后,您需要阅读此查询并使用.DataSource和.DataBind()将数据绑定到GridView;
这是一个非常简单的例子,但我并不确切地知道你在寻找什么,所以我希望这可以帮助你。
编辑:此处的查询可能会变得相当复杂,具体取决于您过滤数据的属性数量,因此您可能需要花一些时间来构建它以确保其正确运行。
答案 1 :(得分:0)
我是ASP.NET的新手,因此我无法找到要完成的控件 此
没有开箱即用的任何控件,可以实现此目的。你必须建立自己的。
这可能不是你想象的方式,但希望你可以推断:
由于您知道要绑定到gridview的对象类型,因此请创建一个下拉框,其中包含用户可以筛选的属性列表。在下拉列表旁边放置一个min
和一个max
文本字段,以便用户可以在这些字段中输入所需的任何值。像这样:
<asp:dropdownlist id="properties" runat="server">
<ListItem Text="Color" Value="Color" />
<ListItem Text="Size" Value="Size"/>
<ListItem Text="Price" Value="Price"/>
</asp:dropdownlist>
<asp:Textbox id="min" runat="server" />
<asp:Textbox id="max" runat="server" />
<asp:Button id="btnFilter" Click="Filter" Text="Filter" />
protected void Filter(object sender, EventArgs e)
{
string minVal = min.Text;
string maxVal = max.Text;
string filterProperty = properties.SelectedValue;
//Now filter your data using the property name and the min and max values
//you can use Linq to do this quickly.
//If binding to a DataTable, use DataTable.Select method and rebind again
}