2

私のASP.NETフォルダーには、3つの異なるSQLdatascourcesを持つカテゴリの種類で満たされた3つのドロップダウンボックスがあります。各ドロップダウンリストは、その上のドロップダウンリストによって異なります。
この目的は、dropdownlist1で何かを選択した後、dropdownlist2のデータソースが変更されることです。したがって、dropdown2のデータは、dropdown1で選択した値によって異なります。また、dropdown3のデータは、dropdown2で選択した値によって異なります。
それはすべて、初めてうまく機能し、ダンディです。しかし、dd1で値を選択し、その後dd2で値を選択すると、失敗し始めます。
たとえば、dropdown1で値をもう一度変更しても、他のドロップダウンリストは変更されません。

返信のために事前にThx

4

3 に答える 3

4

この種のことを行うには、トップレベルのドロップダウンリストに一度だけ入力されるようにする必要があるため、ページの読み込みに!isPostbackを付けて配置します。次に、その最上位のドロップダウンリストにOnSelectedIndexChanged()イベントをアタッチし、その中で、新しいデータソースを設定する前に、必ず2番目のレベルのドロップダウンリストの項目をクリアしてください。

次に、2番目のレベルのドロップダウンリストでOnSelectedIndexChanged()を実行し、3番目のレベルをクリアしてからデータを入力してください。

次に、3番目はイベントを必要としません。

于 2012-04-05T08:03:36.217 に答える
0

のを入力するコードを入力しdd2OnSelectedIndexChangedの(を入力する)についてdd1も同じようにします。OnSelectedIndexChangeddd2dd3

于 2012-04-05T08:07:33.080 に答える
0

キーで接続された2つの異なるテーブルを持つコードの例。この例では、companyIDです。

public partial class Default : Page
{
    public void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            var datacontext = new DataClasses1DataContext();
            List<Company> companies = datacontext.Companies.ToList();
            DropDownList1.DataSource = companies;
            DropDownList1.DataValueField = "CompanyID";
            DropDownList1.DataTextField = "CompanyName";
            DropDownList1.DataBind();
        }
    }

    public void DropDownList1SelectedIndexChanged(object sender, EventArgs e)
    {
        using (var dc = new DataClasses1DataContext())
        {
            DetailsView2.DataSource = null;
            DetailsView2.DataBind();

            DetailsView1.DataSource = dc.Companies.Where(d => d.CompanyID.Equals(DropDownList1.SelectedValue)).ToList();
            DetailsView1.DataBind();

            List<Contact> contacts = 
            dc.Contacts.Where(d => d.CompanyID.Equals(DropDownList1.SelectedValue)).ToList();            
            DropDownList2.DataSource = contacts;
            DropDownList2.DataTextField = "LastName";
            DropDownList2.DataValueField = "ContactID";
            DropDownList2.DataBind();

            if (contacts.Any())
            {
                DetailsView2.DataSource = dc.Contacts.Where(c => c.ContactID.Equals(DropDownList2.SelectedValue)).ToList();
                DetailsView2.DataBind();
            }

        }
    }

    public void DropDownList2SelectedIndexChanged(object sender, EventArgs e)
    {
        using (var dc = new DataClasses1DataContext())
        {
            DetailsView2.DataSource = dc.Contacts.Where(c => c.ContactID.Equals(DropDownList2.SelectedValue)).ToList();
            DetailsView2.DataBind();
        }
    }
}
于 2012-04-05T08:27:35.817 に答える