0

我在这些动态控件中动态创建了一些控件,<asp: Image>当我单击该图像控件时,我想调用 webmethod 控件。我搜索了很多,但没有发生任何事情。

动态控制的代码是

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();
    }
4

1 回答 1

0

摆脱“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;
}

我已将您的 Image 服务器控件更改为 ImageButton 服务器控件,以便更轻松地适应 Click 事件。

这两个按钮中的每一个都连接到一个公共事件处理程序,然后在事件处理程序中,它将发送者(启动事件的控件)转换为 ImageButton,然后获取其 ID 以区分两个按钮。如果 ImageButton 之外的某些东西启动了单击事件,您可能希望在此处放置一个空检查。

如果您需要任何澄清或有其他问题,请告诉我。

于 2013-06-17T19:18:07.333 回答