我在代码隐藏文件中创建了一个图像按钮。它有一个事件imageButton_Click。我还想使用此图像按钮和事件为aspx page.amspanel(基本上是一个面板)中的更新面板创建异步回发触发器,使用图像按钮从文件夹加载所有图像。我基本上尝试在页面上进行部分回发,而不是在我点击amspanel中的图像时再次加载amspanel。
有可能吗?现在它说....无法在UpdatePanel'UpdatePanel1'的触发器的相关控件'imageBtn1'上找到名为'imageButton_Click'的事件。
private void LoadImages()
{
var fileIdx = 0;
foreach (string strfile in Directory.GetFiles(Server.MapPath("~/images")))
{
fileIdx++;
ImageButton imageButton = new ImageButton() { ID = "imageBtn" + fileIdx };
FileInfo fi = new FileInfo(strfile);
imageButton.ImageUrl = "~/images/" + fi.Name;
imageButton.Height = Unit.Pixel(100);
imageButton.Style.Add("padding", "5px");
imageButton.Width = Unit.Pixel(100);
imageButton.Click += new ImageClickEventHandler(imageButton_Click);
AMSPanel1.Controls.Add(imageButton);
AMSPanel1.Height=Unit.Pixel(860);
UpdatePanel1.Triggers.Add(new AsyncPostBackTrigger
{
ControlID = imageButton.ID,
EventName = "imageButton_Click"
});
}
}
protected void imageButton_Click(object sender, ImageClickEventArgs fi)
{
testimage.ImageUrl = ((ImageButton)sender).ImageUrl;
}
// In aspx file i am doing this.AMSPanel is just a panel control.
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Image ID="testimage" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
<ams:AMSPanel ID="AMSPanel1" CssClass="CustomWidth" runat="server" Width="130px" Height="700px" ScrollBars="Vertical">
</ams:AMSPanel>
答案 0 :(得分:0)
为页面中唯一的ImageButton
创建一个ID,并从后面的代码中将触发器添加到更新面板:
// There are many possible strategies for generating IDs unique within the page.
//For example, based on an index corresponding to the current file record.
var fileIdx = 0;
foreach (string strfile in Directory.GetFiles(Server.MapPath("~/images")))
{
fileIdx++;
ImageButton imageButton = new ImageButton(){ ID = "imageBtn" + fileIdx };
FileInfo fi = new FileInfo(strfile);
imageButton.ImageUrl = "~/images/" + fi.Name;
imageButton.Height = Unit.Pixel(100);
imageButton.Style.Add("padding", "5px");
imageButton.Width = Unit.Pixel(100);
imageButton.Click += new ImageClickEventHandler(imageButton_Click);
AMSPanel1.Controls.Add(imageButton);
AMSPanel1.Height=Unit.Pixel(860);
UpdatePanel1.Triggers.Add(new AsyncPostBackTrigger {
ControlID = imageButton.ID
});
}
答案 1 :(得分:0)
您需要添加
Imagebutton.Name =&#34; some_name_here&#34 ;;
然后你可以用FindControl找到它(&#34; some_name_here&#34;)或者至少引用它
答案 2 :(得分:0)
我想帮忙,所以请耐心等待。
*注意:请注意我是如何使用CssClass =&#34; img-btn&#34;比ID =&#34; imgBtn&#34;拨打&#34;点击&#34;来自javascript?只是因为在HTML中呈现时ID会发生变化,请参见下图: 这使得属性&#34; class&#34;比属性更容易访问&#34; ID&#34;。
希望这些有帮助。干杯!