动态创建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();
}
结果如下:
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"));