0

3 つのドロップダウンを使用して、ページ上のデータをフィルタリングします。これは、下の 2 番目のドロップダウンです。最初の で選択した内容に応じて入力されDropdownlistます。

 <asp:DropDownList runat="server" ID="subCatDDL"
                                     AppendDataBoundItems="true"
                                     ItemType="E_Store_Template.Models.SubCategory"
                                    DataTextField="SubCategoryName"
                                     DataValueField="SubCategoryID"

                                     AutoPostBack="true"
                                     CssClass="FilterMenu" Visible="false">
                                    <asp:ListItem Selected="True" Text="SubCategories"  Value="0" />

                                </asp:DropDownList>

これは、2 番目の DropDownList のすべてのデータを取得するために使用するクエリです。

List<SubCategory> query = _db.SubCategories
                       .Where(x => x.Category.CategoryID == DDLcatId)
                       .Distinct()
                       .ToList();



                    subCatDDL.DataSource = query;
                    subCatDDL.DataBind();

だから私は、ドロップダウンリストをクリアするためにさまざまなことにうんざりしてsubCatDDL.Items.Clear()いました。データソースを再設定する前に、データソース = null を設定しようとしました。.Distinct に電話しました。何も機能していません。

したがって、基本的にアイテムを選択すると、フィルタリングしているアイテムにポストバックが入力され、選択したアイテムの複製がドロップダウンリストに作成されます。私が十分にいじっていれば、その2番目のリストを重複でいっぱいにすることができます。どうすればこれを修正できますか?

ドロップダウンリストをクリアして、から入力されているときに再入力する最良の方法は何AutoPostBack="true"ですか?

4

1 に答える 1

0

AppendDataBoundItems="true" & ItemType="E_Store_Template.Models.SubCategory" を削除し、データソースの設定後に subCatDDL.Items.Add() を使用していないことを確認してください

于 2013-03-27T12:00:19.027 に答える