0

2つのドロップダウンがあります

  1. カテゴリー
  2. サブカテゴリ

カテゴリが選択されている場合、2番目のドロップダウンは自動的に更新されるはずなので、最初のドロップダウン用に次のコードを記述しました。

public void bindcategory()
{         
    DataTable dt = new BALCate().GetCate();        
    DropDownList dropdownlist = new DropDownList();
    foreach (DataRow dr in dt.Rows)
    {
        ListItem listitem = new ListItem();
        listitem.Text = dr["cate_name"].ToString();
        dropdownlist.Items.Add(listitem);            
    }
    cate_search.Controls.Add(dropdownlist);
}

しかし、2番目のドロップダウンコードを作成するとエラーが発生し、最初のドロップダウンがbindcategory()ブロック内で宣言されたため、最初のドロップダウン選択値を取得する方法が混乱しました。そのため、他のブロックではアクセスできませんでした。だから私はそれのために何をすべきですか?

public void bindsubcategory()
{
     //error (selected cate_id from 1st dropdown cant accessed due to scop problem)
     DataTable dt = new BALCate().GetSubCate(   //some cate_id   ); 

     // what should the code here?
}

これを行う他の方法はありますか?

4

1 に答える 1

1

あなたはいくつかのことを見逃しています。以下のサンプルコードを参照してください

public void bindcategory()
{         
    DataTable dt = new BALCate().GetCate();        
    DropDownList dropdownlist = new DropDownList();
    //SET AutoPostBack = true and attach an event handler for the SelectedIndexChanged event. This event will fire when you change any item in the category dropdown list.
    dropdownlist.AutoPostBack = true;
    dropdownlist.SelectedIndexChanged += new EventHandler(dropdownlist_SelectedIndexChanged);
    foreach (DataRow dr in dt.Rows)
    {
        ListItem listitem = new ListItem();
        listitem.Text = dr["cate_name"].ToString();
        listitem.Value= dr["cate_id"].ToString();
        dropdownlist.Items.Add(listitem);            
    }
    cate_search.Controls.Add(dropdownlist);
}

void dropdownlist_SelectedIndexChanged(object sender, EventArgs e){
    //Grab the selected category id here and pass it to the bindSubCategory function.
    bindSubCategory(Convert.ToInt32((sender as DropDownList).SelectedValue)); 
}

public void bindsubcategory(int categoryId)
{
     DataTable dt = new BALCate().GetSubCate(categoryId);
     //Bind this data to the subcategory dropdown list 
}
于 2012-10-30T20:09:49.550 に答える