2012-03-16 27 views
1

ユーザーが選択できるカテゴリのセットがあります。 各カテゴリには、ユーザーがフィルタリングする可能性がある異なるプロパティセットがあります。ASP.NET動的データ:サイドバーにフィルタ条件の動的リストを表示

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

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

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

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

他の素晴らしい機能は、次のようになります。

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

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

答えて

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にバインドします。

これは非常に簡単な例ですが、私があなたが探していたものを正確には分かっていないので、これがあなたを助けてくれることを願っています。

編集:あなたはそれが正常に動作を確認するためにそれを構築するいくつかの時間を費やす必要がありので、ここでのクエリは、あなたがデータをフィルタリングする必要がどのように多くの特性に応じて、非常に複雑得ることができます。

+0

ありがとうございました。私は、サイドバーにどのようなコントロールを入れるべきか、そしてそれらのコントロールをサイドバーに動的に取り込む方法を決定しようとしています。 – Zaphod

+0

イカルスの答えは以下のように、自分でビルドする必要があります。これにより、実際にはもう少し作業があっても、フィルタリングプロセスをより詳細に制御できます。 – Gobbledigook

0

私はASP.NETに新しいので、コントロールを見つけて、 を達成することができません。

これを実現するコントロールはありません。あなたは自分でビルドする必要があります。

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

あなたはGridViewのに結合されているオブジェクトの種類を知っているので、プロパティのリストをドロップダウンボックスを作成しますユーザーはフィルタすることができます。ドロップダウンの横に、ユーザーがこれらのフィールドに必要な値を入力できるように、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 

} 
関連する問題