我现在碰到了一个问题,就是我在自定义控件中加载了一个子控件button 作为fileupload控件上传按钮,但我定义的button_click事件却不能触发,我知道不是顶级事件不能触发,在园子里也找到了用顶级事件来触发这个二级事件的方法,但那种方法不好,我想用代理的方式,请问大家有没有好的方法,谢谢了。
附上一段代码:
protected void Button_fileUp_Click(object sender, EventArgs e)
{
bool fileOK = false;
//string path =SeverPath+"/";
if (FileUpload_newsFile .HasFile)
{
String fileExtension = System.IO.Path.GetExtension(FileUpload_newsFile.FileName).ToLower();
String[] allowedExtensions = { ".gif", ".png", ".bmp", ".jpg" };
for (int i = 0; i < allowedExtensions.Length; i++)
{
if (fileExtension == allowedExtensions[i])
{
fileOK = true;
}
}
}
if (fileOK)
{
try
{
FileUpload_newsFile.SaveAs("D:\\image\\" + FileUpload_newsFile.FileName);
}
catch (Exception ex)
{
throw ex ;
}
}
}
还有一个问题就是fileupload控件指定的是绝对路径,我怎么改成相对路径
谢谢大家了!!!!
这个应该是事件冒泡,你去查下自定义控件的事件冒泡
先说你的路径问题。
string path=Server.MapPath(虚拟路径);//得到绝对路径。
FileUpload_newsFile.SaveAs(path);
经过测试,我没有发现你说的事件问题,直接就通过了。应该是你的代码有问题。比如你的控件页面代码中绑定事件的字符错误。
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="Material_WebUserControl" %>
<asp:FileUpload ID="FileUpload_newsFile" runat="server" Width="295px" />
<asp:Button ID="button" runat="server" OnClick="Button1_Click" Text="上传" />
检查一下
应该是没什么问题啊..可能是你的代码有问题吧..给你个例子。你可以下吧..这个是我写的一个控制gridview分页的自定义控件。里面封装了控制gridview的事件。
Code