Как я могу создать динамические кнопки на событие нажатия кнопки (C Sharp ASP.NET)? - PullRequest
1 голос
/ 27 октября 2010

Я хочу создать динамические кнопки на событие нажатия кнопки (например, btnCreateDynamic_Click). Я попытался создать динамические кнопки для события page_load и Pre_int. Они все работают, но я хочу создать их в событии нажатия кнопки. Как я могу сделать это в c # asp.net?

Ответы [ 2 ]

2 голосов
/ 27 октября 2010

Ваше событие нажатия кнопки на клиенте вызовет обратную передачу страницы, которая запустит жизненный цикл страницы ASP.Net; alt text

Событием нажатия кнопки на сервере является PostBackEvent, и вы должны иметь возможность использовать тот же вызов метода CreateMyButton(), который вы использовали в событиях Load или Init.

1 голос
/ 27 октября 2010

Идея состоит в том, чтобы создать список кнопок, в которых вы будете хранить кнопки, созданные в btnCreateDynamic_click.

у вас может быть такой метод:

private Button CreateButton(string id, string name)
        {
            Button b = new Button();
            b.Text = name;
            b.ID = id;
            b.Click += new EventHandler(Button_Click);
            b.OnClientClick = "ButtonClick('" + b.ClientID + "')";
            return b;
        }

в btnCreateDynamic_clickу вас может быть что-то вроде:

Button b = CreateButton("dinamicBtn"+myDinamicButtonsList.Count.ToString(),"dinamicBtn"+myDinamicButtonsList.Count.ToString());
myDinamicButtonsList.add(b);

и в pageLoad, например, вы можете сделать что-то вроде

foreach(button btn in myDinamicButtonsList){
    form1.Controls.Add(btn));
}

List<Button> myDinamicButtonsList = new List<Button>();

myDinamicButtonsList должен храниться где-то, откуда он может быть получен после каждого запроса.

РЕДАКТИРОВАТЬ : При загрузке страницы вы можете получить что-то вроде этого:

if(Session["myDinamicButtons"] == null){
    List<Button> myDinamicButtonsList = new List<Button>();
    Session["myDinamicButtons"] = myDinamicButtonsList;
}

foreach(Button btn in Session["myDinamicButtons"] as List<Button>){
    form1.Controls.Add(btn));
}

Я не проверял это, но он должен работать.

...