1

ユーザーが選択できる一連のカテゴリがあります。各カテゴリには、ユーザーがフィルター処理できるさまざまなプロパティ セットがあります。

各カテゴリのアイテムがグリッド ビューで表示されます。各カテゴリには、グリッド ビュー用の独自の Web ページがあります。

グリッド ビューが表示されているときに、サイド バーにカテゴリに関連するプロパティを表示したいと考えています。ユーザーは、フィルタリングするプロパティを選択できる必要があります。プロパティの最小/最大値でフィルタリングします。

サイドバーに表示するコントロールと、コントロールのセットを動的に設定する方法を決定しようとしています (それぞれが個別のプロパティ フィルターであると仮定します)。

たとえば、Amazon の書籍を見ると、サイドバーには書籍のカテゴリに関連するフィルターの動的に生成されたリストがあります。

その他の優れた機能は次のとおりです。

  • 結果を生成するプロパティ/フィルタのみが表示されるように、プロパティのリストを変更します。

  • 各プロパティ/フィルターに、選択した場合に表示される結果の数を表示させます。

4

2 に答える 2

3

グリッドビューをどのようにロードするのかはよくわかりませんが、これが私が同様のことを行うことができた方法です。

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にバインドする必要があります。

これは非常に単純な例ですが、あなたが何を探しているのか正確にはわかりませんでした。これがお役に立てば幸いです。

編集:ここでのクエリは、データをフィルタリングする必要のあるプロパティの数によってはかなり複雑になる可能性があるため、正しく実行されるように、構築に時間を費やす必要がある場合があります。

于 2012-03-16T20:24:15.813 に答える
0

私はASP.NETを初めて使用するため、これを実現するためのコントロールを見つけるのに苦労しています。

これを実現する、すぐに使用できるコントロールはありません。自分で作成する必要があります。

これはあなたが想像する方法ではないかもしれませんが、うまくいけば、あなたが推定できるアイデアです:

グリッドビューにバインドするオブジェクトのタイプがわかっているので、ユーザーがフィルターできるプロパティのリストを含むドロップダウンボックスを作成します。ドロップダウンの横に、minmaxテキストフィールドを配置して、ユーザーがこれらのフィールドに必要な値を入力できるようにします。このようなもの:

<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

}
于 2012-03-16T20:27:07.930 に答える