动态创建ImageButton并将其onclick函数设置为ServerTransfer到另一个WebForm

本文关键字:设置 ServerTransfer WebForm 另一个 函数 onclick ImageButton 创建 动态 | 更新日期: 2023-09-27 18:14:33

我在div元素中创建了一个for循环的ImageButtons
但是当我创建这个ImageButtons时设置的onclick函数不工作,也不传输。所以我猜我没有正确添加功能,虽然下面的按钮功能工作良好

 protected void Page_Load(object sender, EventArgs e)
        {
              foreach (string strFileName in Directory.GetFiles(Server.MapPath("~/path/")))
            {
                  ImageButton imageButton = new ImageButton();
                  FileInfo fileInfo = new FileInfo(strFileName);
                  imageButton.ImageUrl = "~/path/" + fileInfo.Name.ToString();
                  imageButton.Attributes.Add("ID" , strFileName);                                  
                  imageButton.Attributes.Add("class","imgOne");
                  imageButton.Attributes.Add("runat", "server");
                  imageButton.Attributes.Add("OnClick", "toImageDisplay");
                  photos.Controls.Add(imageButton);

            }

        }
        public void toImageDisplay() 
        {
            Server.Transfer("ImageDisplay.aspx");
        }
        protected void Unnamed1_Click(object sender, EventArgs e)
        {
            toImageDisplay();
        }

动态创建ImageButton并将其onclick函数设置为ServerTransfer到另一个WebForm

结果如下:

    private void LoadPictures()
    {
        foreach (string strFileName in Directory.GetFiles(Server.MapPath("~/path/")))
        {
            ImageButton imageButton = new ImageButton();
            FileInfo fileInfo = new FileInfo(strFileName);
            imageButton.ImageUrl = "~/path/" + fileInfo.Name.ToString();
            imageButton.Click += new ImageClickEventHandler(imageButton_Click);
            imageButton.ID = Path.GetFileName(strFileName);
            photos.Controls.Add(imageButton);
            //imageButton.Attributes.Add("ID", strFileName);
            //imageButton.Attributes.Add("class", "imgOne");
            //imageButton.Attributes.Add("runat", "server");
            //imageButton.Attributes.Add("OnClick", "toImageDisplay");
        }
    }
    void imageButton_Click(object sender, ImageClickEventArgs e)
    {
        //your code...
    }

在页面加载中调用LoadPictures()。

正如elaw7所提到的,您需要连接click事件,而不仅仅是添加它。

您需要连接事件而不是添加onclick属性。实际上有两种方法可以做到这一点(在这两种方法中都不需要手动添加runat=server):

1。

foreach (string strFileName in Directory.GetFiles(Server.MapPath("~/path/")))
{
       ImageButton imageButton = new ImageButton();
       FileInfo fileInfo = new FileInfo(strFileName);
       imageButton.ImageUrl = "~/path/" + fileInfo.Name.ToString();
       imageButton.Attributes.Add("ID" , strFileName);                                  
       imageButton.Click += Unnamed1_Click;
       photos.Controls.Add(imageButton);
}

2。第二个涉及到javascript…在您的代码中,无需指定要调用的服务器端方法,只需使用:

imageButton.Attributes.Add("onclick", string.format("location.href('{0}');","whateverURL.html"));