0

データをフィルタリングするために 2 つの DropDownLists を使用しようとしています。以下のメソッドに両方のOnSelectedIndexChangedEqual を設定します。問題は、SelectedIndex変更された DDL のみを取得していることです。例: DDL1 でオプションを選択すると、その値が取得され、DDL2 の値は取得されません。どちらも同じOnSelectedIndexChangedですが、両方の現在の値を取得すると考えました。両方の DDL コントロールを表示する方法はありますか?

 protected void BrandsList_SelectedIndexChanged(object sender, EventArgs e)
 {
    int DDLcatId = CategoriesList.SelectedIndex;
    int DDLBraId = BrandsList.SelectedIndex;

    IQueryable<Product> DDLprodResult = GetProductsDDL(DDLcatId, DDLBraId);

    if(DDLprodResult == null)
    {

    }

    else
    {
       CatLab.Text = DDLprodResult.ToList().Count().ToString();
       productList.DataSource = DDLprodResult.ToList();
       productList.DataBind();
    }
 }
4

1 に答える 1

1

コードは機能するはずです。もちろんAutoPostBack="true"、両方に設定(デフォルトはfalse)している場合、変更できるのは1つだけです。SelectedIndexしかし、とにかくハンドラーで正しいものを取得する必要があります。

だから私は推測します:あなたはDropDownListsすべてのポストバックでデータバインディングしています。これを行うだけif(!IsPostBack)です。そうしないと、変更を常に元の値で上書きします。

したがって、たとえばPage_Load

protected void Page_Load(Object sender, EvengtArgs e)
{
    if(!IsPostBack)
    {
        // DataBind your DropDownLists
    }
}
于 2013-03-06T18:49:05.923 に答える