ASP.NET (C#) — событие щелчка для динамически генерируемых кнопок ImageButton

на моем веб-сайте я создаю семь кнопок ImageButton, из которых только один (случайный) включен. Я хочу сгенерировать для этой кнопки событие щелчка, которое запускается только при нажатии определенной комбинации клавиш (например, при нажатии E + Click).

Спасибо за помощь.

protected void Page_Load(object sender, EventArgs e)
    {
        //Generates a <int, string> dictionary
        LoginHelper.CreateDictionary(images);

        //'buttons' is an int list
        while (buttons.Count < 7)
        {
            //generates a random number from 1 to 7
            int number = LoginHelper.GenerateNumber();

            if (buttons.Contains(number) == false)
            {
                buttons.Add(number);
                ImageButton btn = new ImageButton();
                btn.CssClass = "loginButtons";
                btn.ImageUrl = (from x in images
                                where x.Key == number
                                select x.Value).First();
                //gets the link string according to the randomized number
                btn.PostBackUrl = LoginHelper.GetLink(number);

                if (btn.PostBackUrl == string.Empty)
                {
                    btn.Enabled = false;
                }

                btn.Click += new ImageClickEventHandler(btn_Click);

                footer.Controls.Add(btn);
            }
        }
    }
    //The event is not triggered
    void btn_Click(object sender, ImageClickEventArgs e)
    {
        ImageButton button = sender as ImageButton;
        ConsoleKeyInfo cki = Console.ReadKey();

        if (cki.Key == ConsoleKey.E)
        {
            button.PostBackUrl = "~/about.aspx";
        }
    }

person drake10k    schedule 05.09.2011    source источник
comment
В чем проблема, с которой вы столкнулись?   -  person Mike    schedule 05.09.2011
comment
когда вы отлаживаете, вы входите внутрь метода btn_click? Это может быть, но у меня есть серьезные проблемы, когда вы читаете нажатую кнопку из консоли при запуске веб-приложения ASP.NET на сервере, учитывая, что пользователь подключен удаленно через браузер.   -  person Davide Piras    schedule 05.09.2011
comment
Что такое footer и что такое buttons??   -  person Tim Schmelter    schedule 05.09.2011
comment
нет, не входит в метод. нижний колонтитул — это ‹div›, куда добавляются кнопки, а «кнопки» — это список int, в котором сохраняется номер кнопки.   -  person drake10k    schedule 05.09.2011


Ответы (1)


сначала вам нужно будет добавить кнопки на Page_Init, а не на Page_Load, где это слишком поздно в цикле страницы для регистрации события.

о нажатой конкретной комбинации клавиш, я уверен, что вы сможете сделать это только с помощью Javascript на стороне клиента, извините, я больше не могу помочь.

person Pedro Maia Costa    schedule 05.09.2011