当前位置:编程学习 > C#/ASP.NET >>

asp.net自定义控件与事件

我定义一个显示图片的控件,控件中有一个图片和删除按钮,并定义了属性(imgURL)和事件(delImage),引用控件时我把控件放到repeater中,然后我想删除图片时,总是提示错误,请高手耐心一点,帮帮我吧,纠结好几天了,谢谢!
请看代码:(字数限制,删余部分系统自动添加的代码)
 
控件ascx--------
 
<asp:Panel ID="panel1" runat="server">
    <br />
    <asp:Image ID="img1" runat="server" />
    <br />
    <br />
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="delimg"/>
</asp:Panel>
ascx.cs-----------
    protected void Page_Load(object sender, EventArgs e)
    {
        img1.ImageUrl = imgurl;
    }
    private string imgurl;
    public string imgURL
    {
        get { return imgurl; }
        set { imgurl = value; }
    }
    public void delimg(object sender, EventArgs e)
    {
        OnClickdelImage(e);
    }
    public delegate void DelImg(object sender,EventArgs e);
    public event DelImg delImage;
    public void OnClickdelImage(EventArgs s)
    {
        if(delImage!=null)
        delImage(this, s);
    }
 
 
引用aspx-------------------------
<%@ Register Src="~/WebUserControl.ascx" TagName="WebUserControl" TagPrefix="UC" %>
 
<body>
    <form id="form1" runat="server">
    <div>
    <asp:Repeater ID="repeater1" runat="server">
        <ItemTemplate>
        <tr><td>
            <UC:WebUserControl ID="wuc1" runat="server" imgURL='<%# Bind("imgurl") %>' OndelImage="tsdel"/>
            </td></tr>
        </ItemTemplate>
        <HeaderTemplate>
            <table border="0" cellpadding="0" cellspacing="0"><tr><td>图片连接</td></tr>
        </HeaderTemplate>
        <FooterTemplate>
            </table>
        </FooterTemplate>
    </asp:Repeater>
    </div>
    </form>
</body>
</html>
 
 
---------------------------
引用aspx.cs
---------------------------
public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            bindimg();
        }
    }
    public void bindimg()
    {
        DirectoryInfo dr = new DirectoryInfo(Server.MapPath("~/image/"));
        DataTable dt = new DataTable();
        dt.Columns.Add("imgurl", typeof(string));
        foreach(FileInfo f in dr.GetFiles("*.gif"))
        {
            DataRow subdr = dt.NewRow();
            subdr["imgurl"]=Server.MapPath("~/image/"+f.Name);
            dt.Rows.Add(subdr);
        }
        repeater1.DataSource = dt;
        repeater1.DataBind();
    }
    public void tsdel(object sender, EventArgs e)
    {
       WebUserControl wuc=(WebUserControl)sender;
       if (File.Exists(wuc.imgURL))
       {
           File.Delete(wuc.imgURL);
       }
    }
} --------------------编程问答-------------------- 参考相关:
http://www.cnblogs.com/insus/archive/2012/03/08/2385223.html



用户自定义事件:
http://www.cnblogs.com/insus/archive/2011/11/18/2253605.html
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,