Выпадающий список с подключением к базе данных - PullRequest
0 голосов
/ 08 апреля 2019

Я пытался заполнить данные в раскрывающемся списке из базы данных. Я хочу выбрать значения из двух раскрывающихся списков и хочу заполнить третий раскрывающийся список данными, соответствующими значениям раскрывающегося списка в базе данных. Но третий ddl всегда будет пуст.

protected void ddl3_SelectedIndexChanged(object sender, EventArgs e)
    {
        DataSet ds = new DataSet();
        ddl3.Items.Clear();
        s = "SELECT subject FROM subjects WHERE branch='" + ddl1.SelectedItem.Value + "' AND sem='" + ddl2.SelectedItem.Value + "'";
        ds = dc.getdata(s);
        for (i = 0; i < ds.Tables[0].Rows.Count; i++)
            ddl3.Items.Add(ds.Tables[0].Rows[i][0].ToString());
    }

Предположим, что значения в базе данных являются филиалами = IT, sem = I sem и sub = ML. При выборе IT в первом ddl, и я sem во втором ddl, третий ddl должен показать ML и другие данные, соответствующие этой ветви и sem.

Ответы [ 2 ]

1 голос
/ 08 апреля 2019

Вы заполняете неправильно, вы должны заполнить ddl2_SelectedIndexChanged, как показано ниже

protected void ddl2_SelectedIndexChanged(object sender, EventArgs e)
    {
        DataSet ds = new DataSet();
        ddl3.Items.Clear();
        s = "SELECT subject FROM subjects WHERE branch='" + ddl1.SelectedItem.Value + "' AND sem='" + ddl2.SelectedItem.Value + "'";
        ds = dc.getdata(s);
        for (i = 0; i < ds.Tables[0].Rows.Count; i++)
            ddl3.Items.Add(ds.Tables[0].Rows[i][0].ToString());
    }

Если вы пишете код во второй выпадающий список, выберите индекс, тогда вы передадите значение dropdown1 и dropdown2.

пример

http://www.dotnetfunda.com/codes/show/5512/dropdownlist-with-country-state-and-city-in-asp-net

0 голосов
/ 08 апреля 2019

Вы не хотите заполнять свой ddl3, который зависит от ddl1 и 2 в обработчике ddl3 (ddl3_selected_index_changed), потому что индекс не может измениться, когда нет вариантов для выбора. После заполнения убедитесь, что он не перезаписан, прежде чем вызывается его обработчик. Это проще всего сделать, заполнив ddl3 в PreRender. Однако это создает много ненужных обращений к базе данных. Лучше заполнить ddl3 в обработчиках для ddl1 и ddl2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...