У меня есть несколько выпадающих списков, и в зависимости от выбора пользователя я должен показать результаты, полученные из SQL, в отдельных кнопках [созданных динамически]. У меня есть событие нажатия кнопки, которое запускает динамическое создание кнопки.
КОД:
void CreateButtons(string val)
{
Button btn = new Button();
btn.Text = val;
Panel1.Visible = true;
btn.ID = val.Replace(" ", "_");
btn.Click += new System.EventHandler(test);
Panel1.Controls.Add(btn);
}
protected void Button1_Click(object sender, EventArgs e)
{
int cont = 0;
string[] names = new string[40];
string del2 = "MY SQL STATEMENT"
SqlCommand del1cmd2 = new SqlCommand(del2, conn);
SqlDataAdapter da = new SqlDataAdapter(del1cmd2);
DataTable dt = new DataTable();
da.Fill(dt);
foreach (DataRow row in dt.Rows)
{
names[cont] = row.Field<string>(0);
CreateButtons(names[cont]);
}
Response.Write(names[cont]);
}
ВОПРОС:
Я получаю результаты из SQL, сохраняю их в адаптере данных и зацикливаю функцию CreateButtons
для создания отдельных кнопок для каждой возвращаемой строки. Я могу получить желаемый результат для создания кнопок, но проблема возникает, когда я пытаюсь установить действие для кнопок.
Мне нужно установить обработчик событий onclick для всех динамически создаваемых кнопок, чтобы я мог выполнять отдельные действия для них.
Когда я нажимаю на текущий код с оператором new System.EventHandler
, страница обновляется, и ничего не происходит, даже если у меня есть модуль ниже.
public void test(object sender, EventArgs e)
{
Response.Write("Dynamic Button click event");
}
ИССЛЕДОВАТЕЛЬСКИЕ УСИЛИЯ:
Я долго искал решения и смог найти рабочий код с созданием кнопки при загрузке страницы, но не нашел аналогичного случая с динамическим созданием кнопки при событии нажатия кнопки.