Вызов веб-метода с использованием Javascript для динамически созданного элемента управления

Я динамически создаю некоторые элементы управления в этом динамическом элементе управления, есть <asp: Image> элемент управления, который я хочу вызвать веб-методом, когда я нажимаю этот элемент управления изображением. Я много искал, но ничего не происходит.

код для динамического управления

for (int i = 0; i < SearchResult.Length; i++)
        {
            System.Web.UI.HtmlControls.HtmlGenericControl panel = new System.Web.UI.HtmlControls.HtmlGenericControl("div");
            panel.Attributes["class"] = "panel";
            panel.ID = "panel_" + (i + 1).ToString();
            System.Web.UI.HtmlControls.HtmlGenericControl inside = new System.Web.UI.HtmlControls.HtmlGenericControl("div");
            inside.Attributes["class"] = "inside";
            Image img = new Image();
            img.ImageUrl = SearchResult[i].ImageUrl;
           // img.Attributes.Add("onclick", THE WEB Method I want to call);
            inside.Controls.Add(img);
            Label label = new Label();
            label.Text = SearchResult[i].Title;
            label.Font.Size = 10;
            label.Font.Bold = true;
            panel.Controls.Add(label);
            panel.Controls.Add(inside);
            test.Controls.Add(panel);
        }

и мой веб-метод

[WebMethod]
    public static void AddToDownload(String ConnectionString,String Query)
    {
        SqlConnection con = new SqlConnection(ConnectionString);
        con.Open();
        SqlCommand cmd = new SqlCommand(Query, con);
        cmd.ExecuteNonQuery();
        con.Close();
    }

person Daniel Johns    schedule 17.06.2013    source источник
comment
Вы пробовали подход jQuery для подключения события click для динамически создаваемых изображений? Вы можете применить атрибуты тире данных (т. е. data-id =) к элементам управления изображениями ASP.NET, а затем обработчик событий щелчка jQuery (читай: анонимная или именованная функция) может считывать эти значения тире данных и использовать вызов AJAX для вызова веб-метод на сервере.   -  person Karl Anderson    schedule 17.06.2013
comment
Нет, я понятия не имею о таком подходе   -  person Daniel Johns    schedule 17.06.2013
comment
Итак, вы пытаетесь запустить событие JavaScript onClick, чтобы страница не выполняла обратную передачу и не мерцала на экране?   -  person Karl Anderson    schedule 17.06.2013
comment
Ну, моя основная цель - вставить данные в базу данных и перенаправить на новую страницу. Меня не интересуют эти посты. Я просто хочу, чтобы основная задача была выполнена.   -  person Daniel Johns    schedule 17.06.2013
comment
Если быть точным, если вы перейдете по этой ссылке ссылка Вы увидите слайдер изображения. изображения на этом слайдере создаются кодом, который я предоставил выше. Я хочу щелкнуть по нему, добавить некоторые данные в БД и перенаправить на другую страницу.   -  person Daniel Johns    schedule 17.06.2013


Ответы (1)


Избавьтесь от строки «onclick» и подключите событие Click на стороне сервера, например:

protected void Page_Load(object sender, EventArgs e)
{
    var img1 = new ImageButton
        {
            ID = "ImageButton1", 
            AlternateText = "Button 1"
        };
    img1.Click += img_Click;
    Panel1.Controls.Add(img1);

    var img2 = new ImageButton
        {
            ID = "ImageButton2", 
            AlternateText = "Button 2"
        };
    img2.Click += img_Click;
    Panel1.Controls.Add(img2);
}

private void img_Click(object sender, ImageClickEventArgs e)
{
    var whoClicked = (sender as ImageButton).ID;
}

Я изменил ваши элементы управления сервером изображений на серверные элементы управления ImageButton, чтобы упростить обработку события Click.

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

Дайте мне знать, если вам нужно что-то уточнить или у вас есть дополнительные вопросы.

person Karl Anderson    schedule 17.06.2013
comment
Я попробовал кнопки изображения, но дисплей испортился, поэтому мне пришлось придерживаться только элементов управления изображением, но я решил проблему другим способом. Спасибо - person Daniel Johns; 17.06.2013
comment
Отлично, рад, что у вас все получилось. Удачи в остальной части вашей работы. - person Karl Anderson; 18.06.2013